104 votes

Comment puis-je savoir par programme quel ordinateur est le contrôleur de domaine dans Windows ?

Je cherche un moyen de déterminer le nom/l'adresse IP du contrôleur de domaine pour un domaine donné auquel un ordinateur client est connecté.

Dans notre entreprise, nous avons beaucoup de petits réseaux que nous utilisons pour les tests et la plupart d'entre eux ont leur propre petit domaine. Par exemple, l'un des domaines s'appelle "TESTLAB". J'ai une station de travail Windows XP qui est membre du domaine TESTLAB et j'essaie de trouver le nom du contrôleur de domaine afin de voir quels utilisateurs ont été définis pour le domaine. Dans notre laboratoire, il y a un mélange de Windows Server 2000 et Windows Server 2003 (et en réalité probablement quelques serveurs NT 4), il serait donc agréable de trouver une solution qui fonctionne pour les deux.

En cherchant sur Internet, il semble qu'il existe plusieurs utilitaires, tels que Windows Power Shell ou nltest, mais ils nécessitent tous le téléchargement et l'installation d'autres utilitaires. J'espérais trouver un moyen de trouver le contrôleur de domaine sans avoir à installer quoi que ce soit d'autre.

EDIT Si je voulais écrire un programme pour trouver le contrôleur de domaine ou les utilisateurs du domaine actuel, comment m'y prendrais-je ?

256voto

MZywitza Points 1583

Avec le langage de programmation le plus simple : DOS batch

echo %LOGONSERVER%

14voto

tvanfosson Points 268301

En C#/.NET 3.5, vous pourriez écrire un petit programme pour le faire :

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

Cela donnera la liste de tous les utilisateurs du domaine actuel :

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);
           }
       }
    }
}

7voto

ErikE Points 18233

Exécuter gpresult à l'invite de commande de Windows. Vous obtiendrez une multitude d'informations sur le domaine actuel, l'utilisateur actuel, les groupes de sécurité des utilisateurs et des ordinateurs, les noms des stratégies de groupe, le nom distinctif Active Directory, etc.

1voto

Brett Veenstra Points 10238

Pour récupérer l'information lorsque le DomainController existe dans un domaine dans lequel votre machine n'a pas sa place, il vous faut quelque chose de plus.

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X