Найти локальные группы, к которым принадлежит пользователь домена?

Я использую пространство имен System.DirectoryServices.AccountManagement для поиска пользователей домена и соответствующих им групп безопасности AD. Это хорошо работает.

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

У меня проблемы с отображением того, к каким ЛОКАЛЬНЫМ группам принадлежит пользователь ДОМЕНА:

PrincipalContext localmachine = new PrincipalContext(ContextType.Machine, "ServerName");
PrincipalContext domain = new PrincipalContext(ContextType.Domain);

// find the user using the domain context (Works fine)
UserPrincipal user = UserPrincipal.FindByIdentity(domain, userName);

// if found - grab its groups
if (user != null)
{
    // The get groups method is the only method that would accept a new context
    PrincipalSearchResult<Principal> groups = user.GetGroups(localMachine);

    // no groups are returned .... removed rest of code
}

Я пытаюсь использовать метод GetGroups, передаваемый в localMachine PrincipalContext, но группы не возвращаются.

Пользователи существуют только в домене AD. В локальных пользователях на localMachine нет записи для этого пользователя. Пользователи домена добавляются в локальные группы безопасности.

Есть идеи? Я хотел бы получить список всех локальных групп, к которым принадлежит этот пользователь домена, а затем посмотреть, существуют ли в этом списке определенные группы. Единственный вариант, который работает сейчас, — это поиск определенных групп в системе и проверка, принадлежит ли пользователь домена к этой группе.

5
задан Logan Garland 26 June 2012 в 22:03
поделиться