Как проверить, является ли данный пользователь членом встроенной группы «Администраторы»? - PullRequest
2 голосов
/ 09 сентября 2008

Мне нужно программно проверить (в .NET), является ли данный пользователь (учетная запись домена) членом встроенной группы «Администраторы» на текущем компьютере (который выполняет приложение).

Возможно ли это?

Ответы [ 4 ]

2 голосов
/ 09 сентября 2008

Я не знаю о .Net, но в win32 проще всего вызвать IsUserAnAdmin (). Если вам нужно больше контроля, вы можете открыть токен процесса и проверить с помощью CheckTokenMembership для каждой группы, которую нужно проверить

Редактировать: См. pinvoke.net для примера кода .NET (спасибо chopeen)

2 голосов
/ 09 сентября 2008

Существует Win32 API для этого вы можете P / Invoke: IsUserAnAdmin

Вопрос более сложен в Vista ... см. сообщение в блоге .

1 голос
/ 09 сентября 2008

Вы можете зациклить группы, как я сделал в этом ответе:

Определение членов локальных групп с помощью C #

Прочитав еще немного, проще всего было бы использовать пространство имен System.DirectoryServices.AccountManagement. Вот как это можно использовать:

http://www.leastprivilege.com/SystemDirectoryServicesAccountManagement.aspx

Пример:

public static bool IsUserInGroup(string username, string groupname, ContextType type)
{
    PrincipalContext context = new PrincipalContext(type);

    UserPrincipal user = UserPrincipal.FindByIdentity(
        context,
        IdentityType.SamAccountName,
        username);
    GroupPrincipal group = GroupPrincipal.FindByIdentity(
        context, groupname);

    return user.IsMemberOf(group);
}
0 голосов
/ 21 ноября 2008

Если вы говорите о работающем в данный момент пользователе, тогда

using System.Security.Principal;

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(identity);

if (wp.IsInRole("BUILTIN\Administrators"))
   // Is Administrator
else
   // Is Not

Если нет, то я ожидаю, что можно установить идентичность для конкретного пользователя, но не изучать, как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...