отображать группы, принадлежащие пользователям домена - PullRequest
3 голосов
/ 16 декабря 2010

У меня есть 2 пользователя, один на локальном компьютере и один на домене .: user1 & testdomain\user1

Теперь оба этих пользователя имеют разные группы

user1 = group1, group3

testdomain\user1 = group2, group4

Теперь я хочуотобразить эти группы, у меня нет проблем с отображением групп user1, но я не могу отобразить группы testdomain\user1.

Мой код такой, как показано ниже.

DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry user = AD.Children.Find(completeUserName, "user");
object obGroups = user.Invoke("Groups");

foreach (object ob in (IEnumerable)obGroups)
{
    // Create object for each group.
    DirectoryEntry obGpEntry = new DirectoryEntry(ob);
    listOfMyWindowsGroups.Add(obGpEntry.Name);
}

где completeusername = user1 и testdomain \ user1

Есть предложения?

1 Ответ

3 голосов
/ 16 декабря 2010

Если вы используете .NET 3.5 или более позднюю версию, взгляните на System.DirectoryServices.AccountManagement . С этими классами очень легко работать. Например,

PrincipalContext pc = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "johndoe");
var groups = user.GetAuthorizationGroups()  // or user.GetUserGroups() 

Если его пользователь, то вы должны использовать ContextType.Machine

Также взгляните на эту статью, которая дает небольшой обзор того же:

http://anyrest.wordpress.com/2010/06/28/active-directory-c/

http://msdn.microsoft.com/en-us/magazine/cc135979.aspx#S5

...