Ответ 1
С самым простым языком программирования: пакет DOS
echo %LOGONSERVER%
Я ищу способ определить, что имя/IP-адрес контроллера домена для данного домена, к которому подключен клиентский компьютер.
В нашей компании у нас много небольших небольших сетей, которые мы используем для тестирования, и большинство из них имеют свои собственные небольшие домены. Например, один из доменов называется "TESTLAB". У меня есть рабочая станция Windows XP, являющаяся членом домена TESTLAB, и я пытаюсь определить имя контроллера домена, чтобы я мог пойти и посмотреть, какие пользователи были определены для домена. В нашей лаборатории есть сочетание Windows Server 2000 и Windows Server 2003 (и на самом деле, вероятно, это несколько NT 4 -серверов), поэтому было бы неплохо найти решение, которое будет работать для обоих.
В Интернете, похоже, существуют различные утилиты, такие как Windows Power Shell или nltest, но для этого требуется, чтобы вы загружали и устанавливали другие утилиты. Я надеялся найти способ найти контроллер домена, не устанавливая ничего дополнительного.
EDIT Если бы я хотел написать программу для поиска контроллера домена или пользователей в текущем домене, как бы я это сделал?
С самым простым языком программирования: пакет DOS
echo %LOGONSERVER%
В С#/.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);
}
}
}
}
В cmd в Windows введите следующую команду:
nltest /dclist:{domainname}
В нем перечислены все контроллеры домена в определенном домене
Из командной строки запросите переменную env logervererver.
C: > SET L
LOGONSERVER = '\'\DCNAME
Запустите 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();