1

J'ai la méthode suivante utilisée pour rechercher un groupe d'utilisateurs soit sur l'ordinateur local (fait en premier) ou dans la forêt actuelle.Services d'annuaire, Rechercher tous les fournisseurs disponibles

public string FindUserGroup(string group) 
    { 
     //Search local computer 
     using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry())) 
     { 
      searcher.Filter = "(&(objectClass=group)(|(cn=" + group + ")(dn=" + group + ")))"; 
      SearchResult result = searcher.FindOne(); 
      if (result != null) 
       return TranslateDirectoryEntryPath(result.GetDirectoryEntry().Path); 
     } 

     //Search current forest 
     Forest forest = Forest.GetCurrentForest(); 
     foreach (Domain domain1 in forest.Domains) 
     { 
      using (DirectorySearcher searcher = new DirectorySearcher(domain1.GetDirectoryEntry())) 
      { 
       searcher.Filter = "(&(objectClass=group)(|(cn=" + group + ")(dn=" + group + ")))"; 
       SearchResult result = searcher.FindOne(); 
       if (result != null) 
        return TranslateDirectoryEntryPath(result.GetDirectoryEntry().Path); 
      } 
     } 

     return string.Empty; 
    } 

Mon problème est que nous avons à titre d'exemple dire « domain.local » et « mydomain.local », et mon login actuel est lié à « domain.local », puis en utilisant ci-dessous ne sera pas en mesure pour trouver quelque chose dans "mydomain.local", même si je parviens à travers l'interface utilisateur de Windows.

Comment puis-je rechercher tous les fournisseurs visibles du point de vue de mon ordinateur lorsque je ne les connais pas tous? Est-ce que je dois vraiment faire le Registre Travailler moi-même?


Edit:

Une différence dans les 2 domaines est le « niveau », ils sont quand je dans un dialogue Explorateur d'objets CHOISIT « Lieux », il mises en page:

  • Computer
  • Direction Tout
    • domain.local
  • mydomain.local

Ainsi excists « mydomain.local » en dehors de ce qui est appelé « répertoire entier », mais mon ordinateur peut le localiser, si cela fait une différence?

+0

Vous avez juste besoin de faire une recherche sur votre ordinateur local, puis de faire une recherche sur le catalogue Gobal. Si votre forêt n'a pas de catalogue global, oui, vous devez effectuer une recherche dans chacun des domaines un par un. –

+0

@Harvey Kwok: Et cela ne serait accessible que par le Registre? ... puisque puisque la "Boîte de dialogue du navigateur d'objets" répertorie le domaine, l'ordinateur en a une certaine connaissance. Et je semble me souvenir d'avoir trouvé quelque chose à ce sujet dans le registre, mais j'espérais ne pas avoir à le découvrir. – Jens

+0

Vous vouliez dire une liste complète des domaines? Cela provient généralement d'Active Directory. Active Directory stocke quel domaine fait confiance à quel domaine. Vérifiez le conteneur CN = System et recherchez tous les objets trustedDomain. –

Répondre

0

Je ne vois pas de problème car ce code aurait déjà été lié aux autres domaines.

foreach (Domain domain1 in forest.Domains) 
{ 
    using (DirectorySearcher searcher = new DirectorySearcher(domain1.GetDirectoryEntry())) 
    { 

Essayez-vous de dire que plus tard vous lier une DirectoryEntry vous-même, et vous ne pouvez pas trouver des objets d'autres domaines?

+0

Non, je dis que le code tel qu'il est ne fonctionne pas. - - Nos ordinateurs sont liés à 2 domaines ... Mais en utilisant le code, je ne trouve aucun objet dans l'un des domaines. - - Le domaine Je ne peux pas trouver d'objets en utilisant le code, je peux cependant facilement trouver des objets en utilisant la boîte de dialogue du navigateur d'objets quand par ex. l'ajout d'autorisations aux dossiers partagés etc etc ... - - Donc, mon ordinateur peut évidemment voir ce que je nomme "mydomain.local", mais mon code ne peut pas ... – Jens

+0

J'ai ajouté quelques "nouvelles" informations que je n'ai pas remarqué avant, je ne sais pas si elles font une différence, le code ne fonctionne toujours pas. – Jens

+0

Cette partie du code fonctionne pour moi. Je suis capable d'accéder à d'autres domaines de cette façon. Pourrait-il être une autre raison comme le filtre de recherche ou quelque chose? Ou peut-être pourrait essayer (cn = *) et énumérer tous les objets. – user607455

Questions connexes