2010-12-31 14 views
1
abrufen

Ich habe den Active Directory-Domänennamen "ADDOMAIN2" mit dem Gruppennamen "CommonUsers" mit 8 Benutzern erstellt. Wenn ich jedoch eine Verzeichnissuche für Benutzer in der Gruppe "CommonUsers" durchführe, wird kein Ergebnis zurückgegeben. Ihr CodeBenutzer aus der Verzeichnisgruppe "Active Directory"

 DirectorySearcher searcher = new DirectorySearcher(); 
     DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("LDAP://{0}", "ADDOMAIN2"), "Administrator", "[email protected]$w0rd"); 
     string dnPath = directoryEntry.Properties["distinguishedName"].Value.ToString(); 

     // string path = string.Format("LDAP://{0}/{1}{2}", "ADDOMAIN2", "", dnPath); 
     string path = "LDAP://ADDOMAIN2/CN=CommonUsers,DC=ADDomain2,DC=ADDomain01,DC=WaveDomain"; 
     directoryEntry.Path = path; 
     searcher.SearchRoot = directoryEntry; 
     searcher.Filter = "(&(objectCategory=person)(objectClass=user))"; 
     SearchResultCollection rs = searcher.FindAll(); 

Irgendeine Idee, was hier falsch ist?

Thanx

+0

Haben Sie meine Antwort überprüft? War es hilfreich? Jeglicher Kommentar? –

Antwort

0

Versuchen Sie, einige externe LDAP-Browser (wie die alte und freie Version 2.6 von Softerra LDAP Browser) unter Verwendung zu prüfen, ob die Query-String wirklich an die richtige Stelle zeigen wird.

0

DirectorySearcher wird nicht verwendet, um Benutzer innerhalb einer Gruppe zu finden. Es wird verwendet, um Objekte unter einem Basispfad zu finden. Da unter Ihrem AD-Gruppenobjekt keine Benutzerobjekte liegen, werden Sie nichts finden.

In den meisten Fällen können Sie die Benutzerobjekte in einer AD-Gruppe anhand ihres Mitgliedsattributs finden. Beachten Sie, dass die AD-Gruppe entweder eine Gruppe oder einen Benutzer enthalten kann. Also, einige der Entres gibt es möglicherweise Gruppe. In einigen Fällen enthält das Elementattribut keine AD-Gruppe oder AD-Benutzer. Es enthält einen Fremdsicherheits-Principal. Dies geschieht, wenn Ihr Benutzer aus einer anderen Gesamtstruktur kommt. Die primäre Gruppe wird auch anders behandelt. Selbst "Domänenbenutzer" ist die primäre Gruppe der meisten Benutzer in AD, sein Elementattribut enthält überhaupt nichts. Es gibt eine Menge anderer Kuriositäten, die das Auflisten eines AD-Gruppenobjekts wirklich schwierig machen.

Glücklicherweise bietet Microsoft in .NET 3.5 einige nützliche Klassen im Framework, um die Drecksarbeit für Sie zu erledigen. Schauen Sie sich System.DirectoryServices.AccountManagement

Um einige kurze Beispiele zu erhalten, können Sie diese Codeproject Besuche article

Ihr Code so etwas wie dies sein sollte.

PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com"); 
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Domain Users"); 
foreach (Principal principal in groupPrincipal.GetMembers(false)) 
{ 
    Console.Out.WriteLine(principal.DistinguishedName); 
} 
Console.In.ReadLine(); 
Verwandte Themen