68 votes

C# Vérifier si l'exécution se fait en tant qu'administrateur

Duplicata possible :
Vérifier si l'utilisateur actuel est un administrateur

J'ai besoin de tester si l'application (écrite en C#, fonctionnant sous Windows XP/Vista/7) est exécutée en tant qu'administrateur (en cliquant avec le bouton droit de la souris sur .exe -> Exécuter en tant qu'administrateur, ou en exécutant en tant qu'administrateur dans l'onglet Compatibilité sous Propriétés).

J'ai cherché sur Google et sur StackOverflow mais je n'ai pas trouvé de solution qui fonctionne.

Ma dernière tentative était la suivante :

if ((new WindowsPrincipal(WindowsIdentity.GetCurrent()))
         .IsInRole(WindowsBuiltInRole.Administrator))
{
    ...
}

157voto

Charles Bretana Points 59899

Essayez ceci

public static bool IsAdministrator()
{
    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

Cela ressemble fonctionnellement au même code que le vôtre, mais ce qui précède fonctionne pour moi...

le faire de manière fonctionnelle, (sans variables temporaires inutiles) ...

public static bool IsAdministrator()
{
   return (new WindowsPrincipal(WindowsIdentity.GetCurrent()))
             .IsInRole(WindowsBuiltInRole.Administrator);
}  

ou, en utilisant la propriété de l'expression :

public static bool IsAdministrator =>
   new WindowsPrincipal(WindowsIdentity.GetCurrent())
       .IsInRole(WindowsBuiltInRole.Administrator);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X