如何使用C#获取Active Directory中所有域的列表

任何人都可以帮助我获取Active Directory中的所有域。 我已经尝试了很多次,但所有程序都只列出了当前的工作域。

我怎样才能做到这一点?

Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password")); Forest forest = domain.Forest; DomainCollection domains = forest.Domains; 

以上使用System.DirectoryServices.ActiveDirectory命名空间。 它将为您提供一个域集合,其中包含与您的给定域位于同一个林中的所有域。

我有一些问题让LeeMobile的代码在我的情况下工作,因为它在运行forest.Domains时试图找到我的应用程序的当前域上下文。 通过做这样的事情,我能够绕过它。

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

使用DirectorySearcher,您可以连接和读取一个Active Directory的结构,包括结构(组织单位,组,用户,计算机,域控制器)。 要连接到其他域,您需要该其他域的凭据。 我们在从属于与目标域不同的域的计算机连接到另一个域时遇到问题。 如果可能的话,我也很好奇。

您还可以使用System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest()。域

 var domains = Forest.GetCurrentForest().Domains.Cast(); foreach (var domain in domains) { Console.WriteLine(domain.Name); }