Como faço para descobrir qual computador é o controlador de domínio no Windows por meio de programação?

votos
89

Eu estou procurando uma maneira de determinar o que o nome / endereço IP do controlador de domínio é para um determinado domínio que um computador cliente está conectado.

Na nossa empresa temos um monte de pequenas redes pequenas que usamos para o teste ea maioria deles têm seus próprios domínios pequenos. Como exemplo, um dos domínios é chamado de TESTLAB. Eu tenho uma estação de trabalho Windows XP que é um membro do domínio TESTLAB e eu estou tentando descobrir o nome do controlador de domínio para que eu possa ir e olhar para ver o que os usuários foram definidos para o domínio. Em nosso laboratório há uma mistura de Windows Server 2000 e Windows Server 2003 (e, na realidade, provavelmente um par de NT 4 servidores), de modo que seria bom para encontrar uma solução que iria trabalhar para ambos.

Olhando na internet, parece que existem várias utilidades, como o Windows Power Shell ou nltest, mas estes exigem que você baixar e instalar outros utilitários. Eu estava esperando para encontrar uma maneira de encontrar o controlador de domínio sem ter que instalar nada adicional.

EDIT Se eu quisesse escrever um programa para encontrar o controlador de domínio ou os usuários no domínio atual, como eu iria fazer sobre isso?

Publicado 09/12/2008 em 21:03
fonte usuário
Em outras línguas...                            


7 respostas

votos
239

Com a linguagem de programação mais simples: lote DOS

echo %LOGONSERVER%
Respondeu 09/12/2008 em 21:55
fonte usuário

votos
12

Em cmd no Windows, digite o seguinte commande:

nltest /dclist:{domainname}

Ele lista todos os controladores de domínio no domínio particular

Respondeu 01/10/2015 em 10:16
fonte usuário

votos
12

. Em C # / NET 3.5 você poderia escrever um pequeno programa para fazer:

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

Isto irá listar todos os usuários no domínio atual:

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);
           }
       }
    }
}
Respondeu 09/12/2008 em 21:30
fonte usuário

votos
7

A partir da linha de comando consultar a variável logonserver env.

C:> SET L

LOGONSERVER = '\' \ DCNAME

Respondeu 23/02/2015 em 21:55
fonte usuário

votos
6

Corre gpresult em um prompt de comando do Windows. Você vai ter uma abundância de informações sobre o domínio atual, usuário atual, grupos de usuários e segurança de computadores, nomes de política de grupo, Diretório nome distinto Ativo, e assim por diante.

Respondeu 04/01/2013 em 03:46
fonte usuário

votos
0

em PowerShell: $ env: logonserver

Respondeu 06/03/2018 em 09:30
fonte usuário

votos
0

Para recuperar as informações quando o DomainControllerexiste em um domínio em que a sua máquina não pertence, você precisa de algo mais.

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

  var domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(domainContext);
  var controller = domain.FindDomainController();
Respondeu 13/11/2012 em 14:30
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more