Ich habe einen Client, der einen Windows-Dienst verwendet, den ich schrieb, der einen angegebenen Active Directory-LDAP-Server für Benutzer in bestimmten Gruppen innerhalb dieses LDAP-Servers abfragt.Active Directory: Get RootDSE in Domäne mit mehreren Wurzeln in Gesamtstruktur?
Sobald ein Benutzer gefunden wird, werden die Benutzerinformationen (z. B. Benutzername, E-Mail usw.) ausgefüllt und versucht, die Domäne des Benutzers innerhalb dieses LDAP-Servers abzurufen.
Wenn ich versuche, die Domäne des Benutzers für diesen bestimmten Client abzurufen, treffe ich eine DirectoryServicesCOMException: Anmeldefehler: unconwn Benutzername oder falsches Kennwort. Diese Ausnahme wird ausgelöst, wenn ich versuche, auf eine Eigenschaft im RootDSE DirectoryEntry-Objekt, das ich instanziiere, zu verweisen.
Dieser Client hat eine Gesamtstruktur mit zwei Wurzeln, wie folgt eingerichtet.
Active Directory-Domänen und -Vertrauensstellungen
ktregression.com
ktregression.root
Ich nehme an, das ist die Frage. Gibt es einen Weg dazu? Gibt es eine Möglichkeit, den NetBIOS-Namen eines bestimmten Domänenobjekts noch abzurufen, ohne diese Ausnahme aufzurufen?
Hier einig Beispielcode zu einem Test AD-Server-Setup zeigt, wie zuvor dokumentiert:
string domainNameLdap = "dc=tempe,dc=ktregression,dc=com";
DirectoryEntry RootDSE = new DirectoryEntry (@"LDAP://10.32.16.6/RootDSE");
DirectoryEntry servers2 = new DirectoryEntry (@"LDAP://cn=Partitions," + RootDSE.Properties["configurationNamingContext"].Value); //*****THIS IS WHERE THE EXCEPTION IS THROWN********
//Iterate through the cross references collection in the Partitions container
DirectorySearcher clsDS = new DirectorySearcher(servers2);
clsDS.Filter = "(&(objectCategory=crossRef)(ncName=" + domainNameLdap + "))";
clsDS.SearchScope = SearchScope.Subtree;
clsDS.PropertiesToLoad.Add("nETBIOSName");
List<string> bnames = new List<string>();
foreach (SearchResult result in clsDS.FindAll())
bnames.Add(result.Properties["nETBIOSName"][0].ToString());
Haben Sie sichergestellt, dass entweder 'RootDSE.Properties [" configurationNamingContext "]. Value' einen Wert zurückgibt, der eigentlich nicht Null ist, oder die LDAP-Nomenklatur von LDAP: // CN = Partitions, DC = ktregression berücksichtigt , DC = com 'oder dergleichen? –
Haben Sie das Codebeispiel, das ich Ihnen für Ihre andere ähnliche Frage von gestern zur Verfügung gestellt habe, ausgespäht? –
@Will, yeah Ich habe es mir angeschaut und es versucht. Ich antwortete darauf mit einer anderen Frage. Ich denke aber, dass ich eigentlich zwei getrennte Probleme habe, weshalb ich diese auch begonnen habe. Das Problem, bei dem ich eine Instanz von zwei Wurzeln in einer einzelnen Gesamtstruktur habe. –