如何以编程方式找出哪台计算机是Windows中的域控制器?

我正在寻找一种方法来确定域控制器的名称/ IP地址是为客户端计算机连接到给定的域。

在我们公司,我们有很多我们用来testing的小型networking,而且大多数都有自己的小域名。 举例来说,其中一个域被命名为“TESTLAB”。 我有一个Windows XP的工作站,是TESTLAB域的成员,我想弄清楚域控制器的名称,这样我就可以去查看哪些用户已经定义了域。 在我们的实验室里有一个Windows Server 2000和Windows Server 2003的混合体(实际上可能是几台NT 4服务器),所以find一个适用于这两个体系的解决scheme是很好的。

从互联网上看,它看起来像是Windows Power Shell或nltest等各种实用程序,但是这些都需要您下载和安装其他实用程序。 我希望find一种方法来find域控制器,而不必另外安装任何东西。

编辑如果我想编写一个程序来查找域控制器或当前域中的用户,我该如何去做呢?

用最简单的编程语言:DOS批处理

echo %LOGONSERVER% 

在C#/ .net 3.5中,你可以写一个小程序来做:

 using (PrincipalContext context = new PrincipalContext(ContextType.Domain)) { string controller = context.ConnectedServer; Console.WriteLine( "Domain Controller:" + controller ); } 

这将列出当前域中的所有用户:

 using (PrincipalContext context = new PrincipalContext(ContextType.Domain)) { using (UserPrincipal searchPrincipal = new UserPrincipal(context)) { using (PrincipalSearcher searcher = new PrincipalSearcher(searchPrincipal)) { foreach (UserPrincipal principal in searcher.FindAll()) { Console.WriteLine( principal.SamAccountName); } } } } 

从命令行查询logonserver envvariables。

C:> SET L

LOGONSERVER = '\' \ DCNAME

在Windows的cmd中,input以下命令:

 nltest /dclist:{domainname} 

它列出了特定域中的所有域控制器

在Windows命令提示符下运行gpresult 。 您将获得有关当前域,当前用户,用户和计算机安全组,组策略名称,活动目录专有名称等的丰富信息。

要在DomainController存在于您的机器不属于的域中时检索信息,则需要更多信息。

  DirectoryContext domainContext = new DirectoryContext(DirectoryContextType.Domain, "targetDomainName", "validUserInDomain", "validUserPassword"); var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext); var controller = domain.FindDomainController();