Exécuter un processus .NET avec des privilèges élevés et des informations d'identification alternatives
Cet article explique comment exécuter une application .NET avec des droits d'administrateur à l'aide d'un autre compte utilisateur.
Le défi :
Tenter de lancer un processus exigeant un accès administratif entraîne souvent une erreur de privilèges insuffisants.
Exemple de code (à titre d'illustration) :
<code>public class ImpersonationHelper : IDisposable { // Impersonation code (omitted for brevity)... } using (new ImpersonationHelper("xxx.blabla.com", "xxxx", "xxxx")) { if (!string.IsNullOrEmpty(txtFilename.Text)) Process.Start(txtFilename.Text); }</code>
La solution : lancer directement avec des privilèges élevés
Plutôt que l'usurpation d'identité de l'utilisateur, créez directement un nouveau processus avec des privilèges élevés :
System.Diagnostics.Process proc = new System.Diagnostics.Process(); System.Security.SecureString ssPwd = new System.Security.SecureString(); proc.StartInfo.UseShellExecute = true; // Note: Changed to true for elevation proc.StartInfo.FileName = "filename"; proc.StartInfo.Arguments = "args..."; proc.StartInfo.Domain = "domainname"; proc.StartInfo.UserName = "username"; proc.StartInfo.Password = new System.Security.SecureString(); // Important: Handle password securely string password = "user entered password"; foreach (char c in password) { proc.StartInfo.Password.AppendChar(c); } proc.StartInfo.Password.MakeReadOnly(); proc.Start(); proc.StartInfo.Password.Dispose(); //Dispose of the SecureString
Cette méthode lance un nouveau processus en utilisant les informations d'identification fournies, en lui accordant les privilèges administratifs nécessaires. N'oubliez pas de gérer les mots de passe en toute sécurité en utilisant SecureString
. Le UseShellExecute = true
est crucial pour l’élévation des privilèges. L'exemple précédent utilisant false
ne fonctionnerait pas à cette fin.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!