Élévation programmatique des privilèges de processus dans C #
Challenge:
Lancement InstallUtil.exe
Pour installer un service en utilisant Process.Start
échoue souvent en raison de privilèges insuffisants, contrairement à une demande directement à partir d'une invite de commande surélevée.
APPROCHE 1: Tirant l'extraction de Shellexcute
Bien que ShellExecute
puisse augmenter les privilèges, il introduit la complexité et les vulnérabilités potentielles de sécurité.
Approche 2: Utilisation de la propriété verbale
Une méthode plus rationalisée consiste à définir la propriété Verb
de l'objet ProcessStartInfo
à "runas":
<code class="language-csharp">startInfo.UseShellExecute = true; startInfo.Verb = "runas";</code>
Cela imite l'option "Exécuter en tant qu'administrateur", nécessitant une confirmation de l'utilisateur via UAC.
Autant une élévation sans invites UAC
Pour éviter les invites UAC répétées, configurez votre application pour l'élévation automatique:
highestAvailable
comme niveau d'exécution dans le manifeste. Cela garantit que tous les processus enfants héritent des autorisations élevées sans plus d'invites, mais nécessitent une seule invite UAC lors du démarrage de l'application.
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!