Aufrufen von IPrincipal.IsInRole unter Windows 7
Wir verwenden NTLM-Authentifizierung in unserer Anwendung, um zu bestimmen, ob ein Benutzer bestimmte Vorgänge ausführen kann. Wir nehmen das IPrincipal der aktuellen Windows-Anmeldung (in WinForms-Anwendungen), wobei @ aufgerufen wi IsInRole, um nach bestimmten Gruppenmitgliedschaften zu suchen.
Um zu überprüfen, ob ein Benutzer ein lokaler Administrator auf dem Computer ist, verwenden wir Folgendes:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
...
bool allowed = Thread.CurrentPrincipal.IsInRole(@"Builtin\Administrators")
Dies funktioniert, wenn der aktuelle Benutzer das @ iAdministrator
user oder ein anderer Benutzer, der Mitglied des @ iBuiltin\Administrators
group.
Bei unseren Tests unter Windows 7 haben wir festgestellt, dass dies nicht mehr wie erwartet funktioniert. DasAdministrator
user funktioniert weiterhin einwandfrei, aber jeder andere Benutzer, der Mitglied des @ iBuiltin\Administrators
group gibt false für das @ zurüIsInRole
Anruf
Was könnte diesen Unterschied verursachen? Ich habe das Gefühl, dass sich eine Standardeinstellung irgendwo geändert hat (in gpedit möglich), kann aber nichts finden, was dem Täter ähnlich sieht.