So stellen Sie DirectoryEntry bereit.Existiert mit Anmeldeinformationen?

8

Heute Morgen habe ich eine nette Methode entdeckt ( DirectoryEntry.Exists ) ), die prüfen sollte, ob auf dem Server ein Active Directory-Objekt existiert. Also habe ich es mit einem einfachen versucht:

%Vor%

Natürlich fehlen Überladungen, um Anmeldeinformationen bereitzustellen. Denn wenn keine Zugangsdaten zur Verfügung gestellt werden, bekomme ich diese Ausnahme:

  

Anmeldefehler: unbekannter Benutzername oder   Schlechtes Passwort.   (System.DirectoryServices.DirectoryServicesCOMException)

Gibt es eine andere Option, die mir die Möglichkeit gibt, meinen Code auf dem AD-Server zu authentifizieren? Oder um die Existenz eines Objekts zu überprüfen?

    
Herman Cordes 26.11.2010, 10:02
quelle

5 Antworten

13

In diesem Fall können Sie die statische Methode nicht verwenden. Existiert wie gesagt:

%Vor%     
JoeBilly 26.11.2010, 13:30
quelle
2

Es gibt keine Möglichkeit dies zu tun und ich habe ein Verbindungsproblem mit geschrieben, das hoffentlich gelöst werden kann.

DirectoryEntry.Exists akzeptiert keine Anmeldeinformationen

    
OmegaMan 20.03.2014 16:36
quelle
1

Hier können Sie über Identitätswechsel in C # nachlesen:

Patrik 26.11.2010 11:29
quelle
1

Beantworten Sie also die Frage: unmöglich.

Schreiben Sie abschließend eine eigene Methode, um den DirectoryEntry anhand des angegebenen Namens mit den angegebenen Anmeldeinformationen zu erhalten. In beiden Fällen der Existenz / Nichtexistenz habe ich eine Instanz von DirectoryEntry erhalten. Um zu überprüfen, ob es sich um ein gültiges Objekt handelt, führe ich einen einfachen Versuch aus, um festzustellen, ob es zu einer Ausnahme kommt. Wenn ja, ist es ungültig.

Nasty Check, aber es funktioniert. Schade, dass die Standardmethode .net DirectoryEntry.Exists keine Überladung bietet, um Anmeldeinformationen genau wie der DirectoryEntry-Konstruktor bereitzustellen ...

    
Herman Cordes 26.11.2010 12:42
quelle
0

Wenn der Benutzer, der den Prozess ausgeführt hat, keine Berechtigungen zum Aufrufen von DirectoryEntry.Exists besitzt, können Sie Identitätswechsel verwenden.

Dies kann hilfreich sein (diskutiert Identitätswechsel in einem AD-Kontext): Ссылка

Übrigens, wenn Sie bereits Anmeldeinformationen eines Benutzers haben, der Zugriff auf alles hat, was Sie brauchen, warum nicht nur den Prozess mit diesem Benutzer (z. B. / runas)?

    
SpeksETC 26.11.2010 10:07
quelle