Comment forcer une application .NET à toujours s'exécuter en tant qu'administrateur ? Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment forcer une application .NET à toujours s'exécuter en tant qu'administrateur ? (Et ne pas perdre la tête)

\n\n

Bonjour, collègue ! Si tu as déjà écrit un utilitaire pour travailler avec le registre, installer des services Windows ou simplement essayé de sauvegarder un fichier dans C:\\Program Files, tu as sûrement rencontré ceci : l'application plante avec une erreur "Access Denied", l'utilisateur hausse les épaules, et tu te grattes la tête. Une situation familière ? Bienvenue dans le monde de l'UAC (User Account Control) et de la lutte éternelle pour les droits d'administrateur.

\n\n

Aujourd'hui, nous allons décortiquer la question la plus populaire sur Stack Overflow (oui, celle-là même, avec des milliers de vues) : "How do I force my .NET application to run as administrator?". Nous ne nous contenterons pas de copier la réponse, nous comprendrons comment cela fonctionne et écrirons un beau code en C#. C'est parti !

\n\n

Pourquoi ce n'est pas si simple ? La magie de l'UAC

\n\n

Windows, depuis Vista, ne fait pas confiance aux applications par défaut. Même si tu es connecté en tant qu'"Administrateur", ton processus reçoit un jeton aux droits filtrés. Cela a été fait pour la sécurité : pour qu'un virus ne puisse pas simplement réécrire les fichiers système.

\n\n

Lorsque tu lances un .exe, le système examine son manifeste. S'il n'y a pas de mention spéciale, l'application s'exécute avec les droits d'un utilisateur standard. Notre tâche est d'ajouter cette mention.

\n\n

Méthode 1 : Ajouter un manifeste (la bonne voie pour .NET Framework)

\n\n

C'est la méthode standard et la plus simple pour les applications Windows Forms ou WPF classiques sur .NET Framework.

\n\n

Étape 1 : Créer ou modifier le fichier app.manifest

\n\n

Dans Visual Studio, fais un clic droit sur le projet → Add → New Item → Application Manifest File. Si le fichier existe déjà (par exemple, app.manifest), ouvre-le simplement.

\n\n

Tu verras du XML avec beaucoup de commentaires. La section qui nous intéresse est requestedExecutionLevel. Modifie-la comme ceci :

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">\n  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>\n  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">\n    <security>\n      <requestedPrivileges>\n        <!-- IMPORTANT : Cette ligne -->\n        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />\n      </requestedPrivileges>\n    </security>\n  </trustInfo>\n</assembly>
\n\n

Fais attention à level="requireAdministrator". Il existe deux autres valeurs :

\n
    \n
  • asInvoker — exécution avec les droits du processus parent (par défaut).
  • \n
  • highestAvailable — exécution avec les droits maximum disponibles pour l'utilisateur actuel.
  • \n
\n\n

Étape 2 : Lier le manifeste au projet (si cela ne fonctionne pas automatiquement)

\n\n

Ouvre les propriétés du projet (clic droit sur le projet → Properties). Dans l'onglet Application, trouve la section Resources et dans la liste déroulante "Manifest", sélectionne "app.manifest".

\n\n

Terminé ! Désormais, au lancement de ton .exe, Windows affichera immédiatement la fenêtre UAC : "Autoriser cette application à apporter des modifications à votre appareil ?". Si l'utilisateur clique sur "Oui", l'application obtiendra les droits d'administrateur complets.

\n\n

Méthode 2 : Redémarrage programmatique avec élévation (pour .NET Core / .NET 5+)

\n\n

Cette méthode est universelle et fonctionne même avec .NET Core, .NET 5/6/7/8 et .NET Framework. Parfois, le manifeste n'est pas adapté car :

\n
    \n
  • Tu souhaites que l'application se lance sans droits, mais que certaines fonctionnalités nécessitent une élévation.
  • \n
  • Tu utilises une application console ou un service.
  • \n
\n\n

L'idée est simple : l'application vérifie si elle dispose des droits. Si ce n'est pas le cas, elle se relance elle-même, mais avec la clé runas (de

Blogs

Book Recommendations