Как узнать, какой компьютер является контроллером домена в Windows программно?
Я ищу способ определить, что такое имя / IP-адрес контроллера домена для данного домена, к которому подключен клиентский компьютер.
в нашей компании мы имеем много маленьких сетей, которые мы используем для тестирования и большинство из них имеют свои собственные небольшие Домены. Например, один из доменов называется "TESTLAB". У меня есть рабочая станция Windows XP, которая является членом домена TESTLAB, и я пытаюсь выяснить имя контроллера домена, поэтому что я могу пойти и посмотреть, какие пользователи были определены для домена. В нашей лаборатории есть сочетание Windows Server 2000 и Windows Server 2003 (а на самом деле, вероятно, несколько серверов NT 4), поэтому было бы неплохо найти решение, которое будет работать для обоих.
глядя в Интернете, похоже, что существуют различные утилиты, такие как Windows Power Shell или nltest, но все они требуют загрузки и установки других утилит. Я надеялся найти способ найти контроллер домена без необходимости устанавливать что-либо дополнительное.
EDIT если бы я хотел написать программу для поиска контроллера домена или пользователей в текущем домене, как бы я это сделал?
7 ответов:
в cmd в Windows введите следующую команду:
nltest /dclist:{domainname}
в нем перечислены все контроллеры домена в конкретном домене
В 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); } } } }
Run
gpresult
в командной строке Windows. Вы получите обилие информации о текущем домене, текущем пользователе, группах безопасности пользователя и компьютера, именах групповой политики, отличительном имени Active Directory и т. д.
чтобы получить информацию, когда
DomainController
существует в домене, в котором ваша машина не принадлежит, вам нужно что-то еще.DirectoryContext domainContext = new DirectoryContext(DirectoryContextType.Domain, "targetDomainName", "validUserInDomain", "validUserPassword"); var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext); var controller = domain.FindDomainController();