Cet article aborde le problème courant de la nécessité de disposer de privilèges administratifs pour démarrer un processus dans .NET. La solution présentée utilise l'usurpation d'identité pour exécuter le processus sous un compte utilisateur avec les autorisations requises.
L'extrait de code suivant montre comment y parvenir à l'aide d'une classe ImpersonationHelper (non illustrée, mais supposée gérer la logique d'usurpation d'identité nécessaire) :
<code class="language-csharp">System.Diagnostics.Process proc = new System.Diagnostics.Process(); System.Security.SecureString ssPwd = new System.Security.SecureString(); proc.StartInfo.UseShellExecute = false; proc.StartInfo.FileName = "filename"; proc.StartInfo.Arguments = "args..."; proc.StartInfo.Domain = "domainname"; proc.StartInfo.UserName = "username"; string password = "user entered password"; foreach (char c in password) { ssPwd.AppendChar(c); } ssPwd.MakeReadOnly(); //Important security step proc.StartInfo.Password = ssPwd; proc.Start();</code>
Ce code lance un processus en utilisant les informations d'identification spécifiées. Surtout, le mot de passe est géré de manière sécurisée à l’aide de SecureString
. N'oubliez pas de mettre en œuvre une gestion appropriée des erreurs et de jeter le SecureString
correctement après utilisation. Cette méthode fournit un moyen sécurisé d'exécuter des processus avec des privilèges élevés en tirant parti de l'usurpation d'identité de l'utilisateur.
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!