Ich habe den folgenden Code (C #):
(Optimiert von: Ссылка )
%Vor% Die rootDSE
wird korrekt erstellt, der Benutzer userDSE
ist jedoch unbrauchbar und löst die Ausnahme "Es gibt kein solches Objekt auf dem Server aus" aus, wenn ich versuche, sie zu verwenden.
Die LDAP-Zeichenfolgen lauten wie folgt:
Stamm: LDAP: // DC = Firma, DC = lokal
Benutzer: LDAP: // OU = Benutzer, DC = Firma, DC = lokal
Ich laufe auf Vista als Admin, aber das muss auch auf XP (Admin) funktionieren.
Ich bin neu in LDAP und Directory Management, also stolpere ich hier im Dunkeln herum. Irgendwelche Gedanken? Auch - alle Artikel, die man verlinkt, könnten mir einen Einblick geben, wie alles funktioniert, wäre zu begrüßen.
Das erste, was ich als Test versuchen würde, ist, den gewünschten Pfad hart zu codieren, wenn Sie einen Verzeichniseintrag wie folgt erstellen:
%Vor%Dies sagt Ihnen ziemlich schnell, ob dies ein tatsächlicher Pfad in Ihrem Active Directory ist. Ich weiß nicht, wie Ihre AD aussieht, also kann ich Ihnen nicht sagen, ob dies ein gültiger Pfad ist oder nicht. Wenn dieser Pfad korrekt ist, sollten Sie unter Ihrem Active Directory-Benutzer und Computer-MMC-Plugin Ihre Stammdomäne und einen OU-Ordner unter dem Stamm Benutzer haben.
Pfade werden in AD rückwärts generiert, wenn sich Ihr Benutzerordner unter einer anderen Organisationseinheit als der Stamm befindet, als es
wäre %Vor%So würde Ihr AD-Schema aussehen:
%Vor%Ein großartiger Artikel zur Verwaltung von Active Directory in .NET:
HowTo: (fast) alles in Active Directory über C #
Sie sollten auch die System.DirectoryServices, System.DirectoryServices.ActiveDirectory und die System.DirectoryServices.AccountManagement-Namespaces recherchieren, die im .NET 3.5 Framework bereitgestellt werden. Ich glaube, dass System.DirectoryServices und ActiveDirctory-Namespaces verfügbar waren, die in .Net 1.1 anstarrten, und AccountManagement wurde in .Net 3.5 eingeführt.
Microsoft-Dokumentation - Viele gute Links zur Verwendung des Namensraums
Nachtrag:
Um tatsächlich einen Benutzer in AD zu finden, werden Sie folgendes tun wollen:
%Vor%Dies mag albern und dumm erscheinen, aber die Standardbaumstruktur in Active Directory ist nicht OU = Benutzer , dc = Domäne, dc = com, sondern cn = Benutzer , dc = Domäne, dc = com (Beachten Sie die CN = nicht die OU = für Benutzer.
Es scheint dumm, da ein Container-Objekt (objectClass von cn) in AD kein Empfänger von Gruppenrichtlinien sein kann, aber aus Gründen, die ich nicht verstehe, ist das der Standard. (Tatsächlich verstehe ich das, weil Containment für einen CN einer NT-Domäne ähnlicher ist als OU)
Bekommt fast jeden, den ich treffe, beim ersten Versuch LDAP zu binden / zu AD zu binden.
Wie Geoffc richtig erwähnt, ist in "Active Directory" der "Benutzer" unter der Domäne ein Container-Objekt und kein Objekt der Organisationseinheit. Dies führt zu einem völlig anderen LDAP-Pfad, weshalb Sie die Fehlermeldung erhalten.
Probieren Sie den folgenden Code aus und senden Sie ihn, wenn er Ihr Problem behebt:
%Vor%