Вызов IPrincipal.IsInRole в Windows 7
Мы используем аутентификацию NTLM в нашем приложении, чтобы определить, может ли пользователь выполнять определенные операции. Мы используемIPrincipal их текущего входа в Windows (в приложениях WinForms), вызываяIsInRole проверить наличие определенных групповых членств.
Чтобы проверить, что пользователь является локальным администратором на машине, мы используем:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
...
bool allowed = Thread.CurrentPrincipal.IsInRole(@"Builtin\Administrators")
Это работает, если текущий пользователь являетсяAdministrator
пользователь, или другой пользователь, который является членомBuiltin\Administrators
группа.
В нашем тестировании на Windows 7 мы обнаружили, что это больше не работает, как ожидалось.Administrator
пользователь по-прежнему работает нормально, но любой другой пользователь, который является членомBuiltin\Administrators
группа возвращает ложь дляIsInRole
вызов.
Что может быть причиной этой разницы? У меня есть ощущение, что настройки по умолчанию где-то изменились (возможно, в gpedit), но я не могу найти ничего похожего на виновника.