Как узнать, какой компьютер является контроллером домена в Windows программным путем?

Я ищу способ определить, что имя/IP-адрес контроллера домена для данного домена, к которому подключен клиентский компьютер.

В нашей компании у нас много небольших небольших сетей, которые мы используем для тестирования, и большинство из них имеют свои собственные небольшие домены. Например, один из доменов называется "TESTLAB". У меня есть рабочая станция Windows XP, являющаяся членом домена TESTLAB, и я пытаюсь определить имя контроллера домена, чтобы я мог пойти и посмотреть, какие пользователи были определены для домена. В нашей лаборатории есть сочетание Windows Server 2000 и Windows Server 2003 (и на самом деле, вероятно, это несколько NT 4 -серверов), поэтому было бы неплохо найти решение, которое будет работать для обоих.

В Интернете, похоже, существуют различные утилиты, такие как Windows Power Shell или nltest, но для этого требуется, чтобы вы загружали и устанавливали другие утилиты. Я надеялся найти способ найти контроллер домена, не устанавливая ничего дополнительного.

EDIT Если бы я хотел написать программу для поиска контроллера домена или пользователей в текущем домене, как бы я это сделал?

Ответ 1

С самым простым языком программирования: пакет DOS

echo %LOGONSERVER%

Ответ 2

В С#/.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);
           }
       }
    }
}

Ответ 3

В cmd в Windows введите следующую команду:

nltest /dclist:{domainname}

В нем перечислены все контроллеры домена в определенном домене

Ответ 4

Из командной строки запросите переменную env logervererver.

C: > SET L

LOGONSERVER = '\'\DCNAME

Ответ 5

Запустите gpresult в командной строке Windows. Вы получите множество информации о текущих доменах, текущих пользователях, группах безопасности пользователей и компьютеров, именах групповых политик, отличительном имени Active Directory и т.д.

Ответ 6

Чтобы получить информацию, когда DomainController существует в Домене, в котором ваша машина не принадлежит, вам нужно что-то еще.

  DirectoryContext domainContext =  new DirectoryContext(DirectoryContextType.Domain, "targetDomainName", "validUserInDomain", "validUserPassword");

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();