如何使用C#获取Active Directory中所有域的列表
问题描述:
任何人都可以请帮助我获取Active Directory中的所有域。我尝试了很多次,但所有程序都只列出了当前的工作域。如何使用C#获取Active Directory中所有域的列表
我该怎么做?
答
使用DirectorySearcher,您可以连接并读取一个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;
答
您也可以使用System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest()。域
var domains = Forest.GetCurrentForest().Domains.Cast<Domain>();
foreach (var domain in domains)
{
Console.WriteLine(domain.Name);
}
我书签此链接的一天。它提供了使用LDAP查询来完成这些操作的方法。应该适应ADSI。 http://itchanged.com/FindingAllDomainsInAnActiveDirectoryForest.html – 2010-01-11 10:59:53