2008-11-27 1 views
8

Может ли кто-нибудь помочь мне получить все домены в Active Directory. Я пробовал много раз, но все программы перечисляют только текущий рабочий домен.Как получить список всех доменов в Active Directory с помощью C#

Как я могу это сделать?

+0

Я закладкой эту ссылку на другой день. Он предлагает подход к этому, используя LDAP-запросы. Должна быть адаптирована к ADSI. http://itchanged.com/FindingAllDomainsInAnActiveDirectoryForest.html – 2010-01-11 10:59:53

ответ

1

Использование DirectorySearcher позволяет подключать и читать структуру одного Active Directory, включая структуру (организационные единицы, группы, пользователей, компьютеры, контроллеры домена). Чтобы подключиться к другому домену, вам потребуются учетные данные этого другого домена. У нас были проблемы с подключением к другому домену с машины, принадлежащей другому домену, чем целевой. Мне также интересно, если это возможно.

9
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password")); 

Forest forest = domain.Forest; 

DomainCollection domains = forest.Domains; 

Вышеупомянутое использует пространство имен System.DirectoryServices.ActiveDirectory. Он предоставит вам коллекцию доменов, содержащую все домены, которые находятся в том же лесу, что и ваш домен.

4

У меня были некоторые проблемы с тем, чтобы код LeeMobile работал в моем случае, потому что он пытался найти текущий контекст домена моего приложения при запуске forest.Domains. Мне удалось обойти это, сделав что-то вроде этого.

Forest forest = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, "yourForestDomain", "username", "password")); 
DomainCollection domains = forest.Domains; 
0

Вы также можете использовать System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest(). Домены

var domains = Forest.GetCurrentForest().Domains.Cast<Domain>(); 
foreach (var domain in domains) 
{ 
    Console.WriteLine(domain.Name); 
} 
Смежные вопросы