2008-11-27 87 views
8

任何人都可以請幫助我獲取Active Directory中的所有域。我嘗試了很多次,但所有程序都只列出了當前的工作域。如何使用C#獲取Active Directory中所有域的列表

我該怎麼做?

+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); 
} 
相關問題