2012-03-06 6 views
3

Я хотел бы перечислить все контроллеры домена в домене (где текущий пользователь или компьютер являются членами, а также не в том же лесу).C# Howto перечислить DC в другом домене

Я нашел хороший способ

Domain domain = Domain.GetCurrentDomain(); 
foreach (DomainController dc in domain.DomainControllers) 
    ... 

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

Подключение через

DirectoryEntry child = new DirectoryEntry("LDAP://" + server + "/" + objectDn, userName, password); 

работает хорошо. Но у меня нет идеи, как это сделать вместе.

+0

решение уже сформулировано в SO на http://stackoverflow.com/questions/323608/how-to-get-list-of-all-domains-in-active-directory-using-c-sharp Домен domain = Domain.GetDomain (новый DirectoryContext (DirectoryContextType.Domain, "yourDomain", "имя пользователя", "пароль")); – Krishna

+0

Почти. Но это не позволяет передавать IP-адрес туда, где должен выполняться запрос! Для этого потребуется домен в пределах одного леса. – Stef

+0

просто измените тип на сервер каталогов, извините, если мне не хватает точки вопроса System.DirectoryServices.ActiveDirectory.DirectoryContext dc = new DirectoryContext (DirectoryContextType.DirectoryServer, «», «ваше имя пользователя», «pwd») ; – Krishna

ответ

6
using System.DirectoryServices.ActiveDirectory; 

...
....

DirectoryContext dc = new DirectoryContext(DirectoryContextType.DirectoryServer, "ip", "user", "pwd"); //change parameters here 
Forest forest = Forest.GetForest(dc);  
Console.WriteLine(forest.Domains.Count); 

вышеуказанные работы для меня (дает правильное количество доменов)

Я тестирование с учетной записью администратора сети, очевидно. Надеюсь, это поможет

+0

Работает отлично, спасибо. Я немного изменил его, чтобы сначала удалить домен из контекста domaincontext, а не леса. – Stef

Смежные вопросы