Кроме того, если вы запросите AD для членов группы, вы сможете напрямую сравнить отличительные имена всех членов, не анализируя код через класс DirectoryEntry
пространства имен System.DirectoryServices
.
В остальном я просто где-то не знаю такого класса. знак равно
Надеюсь, это хоть как-то поможет!
ИЗМЕНИТЬ №1
Вот ссылка, по которой я многому научился, работая с AD и пространством имен System.DirectoryServices
: _ 4_
Я предоставлю вам образец кода через несколько дней, если он вам все еще понадобится, где я буду использовать объектный класс System.DirectoryServices.DirectorySearcher
для извлечения членов группы.
Надеюсь, эта ссылка поможет вам, как и мне! знак равно
ИЗМЕНИТЬ №2
Вот пример кода, о котором я вам рассказал. Это должно сделать более эффективным запрос к AD без необходимости работать bakc и далее AD.
public IList<string> GetMembers(string groupName) {
if (string.IsNullOrEmpty(groupName))
throw new ArgumentNullException("groupName");
IList<string> members = new List<string>();
DirectoryEntry root = new DirectoryEntry(@"LDAP://my.domain.com");
DirectorySearcher searcher = new DirectorySearcher();
searcher.SearchRoot = root;
searcher.SearchScope = SearchScope.Subtree;
searcher.PropertiesToLoad.Add("member");
searcher.Filter = string.Format("(&(objectClass=group)(sAMAccountName={0}))", groupName);
SearchResult result = searcher.FindOne();
DirectoryEntry groupFound = result.GetDirectoryEntry();
for (int index = 0; index < ((object[])groupFound.Properties["member"].Value).Length; ++index)
members.Add((string)((object[])groupFound.Properties["member"].Value)[index]);
return members;
}
Заявление об ограничении ответственности: Этот код предоставляется как есть. Я протестировал его на своем локальном компьютере, и он отлично работает. Но поскольку мне пришлось перепечатать его здесь, потому что я не мог просто скопировать и вставить, возможно, я допустил некоторые ошибки при наборе текста, которых, как мне хотелось бы, не произошло.
person
Will Marcouiller
schedule
30.09.2010