web-dev-qa-db-fra.com

C # Vérifier si exécuté en tant qu'administrateur

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

J'ai besoin de tester si l'application (écrite en C #, fonctionnant sous Windows XP/Vista/7) fonctionne en tant qu'administrateur (comme dans le clic droit .exe -> Exécuter en tant qu'administrateur, ou Exécuter en tant qu'administrateur dans l'onglet Compability sous Propriétés) .

J'ai googlé et recherché StackOverflow mais je ne trouve pas de solution de travail.

Ma dernière tentative était la suivante:

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

Essaye ça

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

Cela ressemble fonctionnellement à votre code, mais ce qui précède fonctionne pour moi ...

le faire fonctionnellement, (sans variables temporaires inutiles) ...

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

ou, en utilisant une propriété d'expression corporelle:

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