Pourquoi WindowsPrincipal.IsInRole retourne toujours faux pour le groupe « Administrateurs »?

StackOverflow https://stackoverflow.com/questions/9310143

  •  26-10-2019
  •  | 
  •  

Question

Mon compte utilisateur local est dans le groupe Administrateurs, et je voulais simplement comprendre comment un projet fenêtres de formes déterminerait si je suis dans le groupe d'administrateurs. Alors, j'ai commencé un projet Windows et formulaires essayé ce qui suit:

[STAThread]
static void Main()
{
    string adminGroup1 = @"BUILTIN\Administrators";
    string adminGroup2 = Environment.MachineName + @"\Administrators";
    string adminGroup3 = Environment.MachineName.ToLower() + @"\Administrators";
    string adminGroup4 = "Administrators";
    string adminGroup5 = "administrators";

    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
    WindowsPrincipal currentUser1 = (WindowsPrincipal)Thread.CurrentPrincipal;
    bool IsAdmin1_1 = currentUser1.IsInRole(adminGroup1); // false
    bool IsAdmin1_2 = currentUser1.IsInRole(adminGroup2); // false
    bool IsAdmin1_3 = currentUser1.IsInRole(adminGroup3); // false
    bool IsAdmin1_4 = currentUser1.IsInRole(adminGroup4); // false
    bool IsAdmin1_5 = currentUser1.IsInRole(adminGroup5); // false

    WindowsPrincipal currentUser2 = new WindowsPrincipal(WindowsIdentity.GetCurrent());
    bool IsAdmin2_1 = currentUser2.IsInRole(adminGroup1); // false
    bool IsAdmin2_2 = currentUser2.IsInRole(adminGroup2); // false
    bool IsAdmin2_3 = currentUser2.IsInRole(adminGroup3); // false
    bool IsAdmin2_4 = currentUser1.IsInRole(adminGroup4); // false
    bool IsAdmin2_5 = currentUser2.IsInRole(adminGroup5); // false

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

Pourquoi tous ces contrôles défaillants?

Était-ce utile?

La solution

essayer

currentUser1.IsInRole(WindowsBuiltInRole.Administrator)

Voir MSDN .

"Dans les versions de Windows Vista et versions ultérieures du système d'exploitation Windows, User Account Control (UAC) détermine les privilèges d'un utilisateur. [..] Le code qui exécute la méthode IsInRole ne pas afficher la boîte de consentement. Le code renvoie false si vous êtes dans le rôle utilisateur standard, même si vous êtes dans le groupe Administrateurs intégré "

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top