Pourquoi WindowsPrincipal.IsInRole retourne toujours faux pour le groupe « Administrateurs »?
-
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?
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é "