2010-12-16 2 views
3

у меня есть 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

Любые предложения?

+0

Поставщик `WinNT: //` предназначен только для обратной совместимости и работает только для локальных компьютеров NTS. Если вы хотите допросить учетные записи домена, вы ** должны ** использовать поставщик LDAP: // вместо – 2010-12-16 06:17:53

ответ

3

Если вы используете .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

+0

, то getAuthorizationGroups не работают, и я получаю ошибку (5), а группы получают значение «Пользователи домена». пожалуйста, помогите мне спасибо .. – user175084 2010-12-17 17:32:05