C# und Active Directory

daschii

Mitglied
Hallo zusammen,

Ich bin neu hier und habe ein Problem mit C# und Active Directory auslesen. Hoffe, Ihr könnt mir helfen :)

Ich möchte gerne alle User die sich in einer Active Directory befinden auslesen. Dies bewerkstelligt der folgende Code:



System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://DC=arptest,DC=intern");

System.DirectoryServices.DirectorySearcher mySearcher = new

System.DirectoryServices.DirectorySearcher(entry);

mySearcher.Filter = ("(&(objectCategory=Person)(objectClass=user))");

foreach(System.DirectoryServices.SearchResult result in

mySearcher.FindAll())

{



label1.Text = label1.Text + Environment.NewLine + result.GetDirectoryEntry().Path;

}



Jetzt möchte ich aber dass es zusätzlich zum Username auch bestimmte Eigenschaften wie z.B. Vorname,Nachname usw. ausliest. Ich hab gelesen, dass das mit der

InvokeMember Methode funktioniert, konnte aber nirgends ein Anwendungsbeispiel finden und weiss nicht, wie ich die Methode einbauen muss.

Kann mir hier jemand weiterhelfen?

So dass ich am Schluss eine Auflistung der User im AD und div. ADSI-Eigenschaften wie z.B. Vorname/Nachname habe.



Ist es desweiteren möglich nur User auszulesen, die eine bestimmte Eigenschaft vorweisen? Zum Beispiel soll es mir nur diejenigen User auflisten, die als Nachname „Müller“ haben.



Vielen Dank für Eure Hilfe!
Viele Grüsse,
Bitkiller
 
Mit welchem Framework arbeitest du? .NET 1.x oder 2.0 ?

Unter 2.0 hast nämlich ein paar Erweiterungen im DirectoryServices-Namespace, der den Umgang mit dem AD zusätzlich erleichtern.

Aber sag mal welches Framework, dann weiß ich in welche Richtung meine Antwort gehen soll :)
 
Hallo Norbet,

erstmals vielen Dank für deine schnelle Antwort!

Ich arbeite mit dem .net Framework 1.1 - Ich hoffe meine "Vorstellungen" sind mit dem 1.1er auch realisierbar :)

Grüsse,
bitkiller
 
Hallo Norbert,

Vielen Dank für die Artikel, bin jetzt einen Schritt weitergekommen und kann die Eigenschaften der User auch auslesen - Zumindest in der Theorie.
In der Praxis kommt beim Debuggen folgende Fehlermeldung:

*****
Eine nicht behandelte Ausnahme des Typs 'System.NullReferenceException' ist in WindowsApplication2.exe aufgetreten.

Zusätzliche Informationen: Object reference not set to an instance of an object.
****
Woran liegt das?

Anbei noch mein "modifizierter" Source Code:

***

foreach(System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
System.DirectoryServices.DirectoryEntry de=resEnt.GetDirectoryEntry();
label1.Text = label1.Text + Environment.NewLine + resEnt.GetDirectoryEntry().Path + Environment.NewLine + (de.Properties["GivenName"].Value.ToString());


}
***

Vielen Dank im vorraus schon für deine Hilfe:)
 
Schwer zu sagen, da ich ja nicht weiß wo genau der Fehler auftritt. Debug einfach mal durch, und schau dir die einzelnen Objekte an, dann siehst du welches Objekt nicht gesetzt wurde.

Entweder ist es das Objekt mySearcher oder das Objekt de - schätze ich jetzt mal. Läßt sich aber - wie gesagt - mit dem Debugger sehr einfach finden.
 
Ähm - Ich versteh nur Bahnhof.... :confused:

Woran erkenne ich im Debugger welches Objekt das "nicht gesetzte" ist?

Vielen Dank:)
 
Ähm, mit der Maus drüber fahren, die Local Variablen angucken, mach dich mit dem Visual Studio vertraut. Kennst du das Visual Studio tust du dich auch mit allen Aufgaben viel leichter.
 
Das mit dem Maus drüber fahren ist mir klar, aber nicht wie ich herausfinden soll, welche Variable nicht gesetzt ist, sprich wie ich das beheben muss.

Folgender Abschnitt ist gelb markiert:
string lastname = de.Properties["GivenName"].Value.ToString();

Davon ist der String lastname = hans,
de = {System.DirectoryServices.DirectoryEntry}
de.Properties = {System.DirectoryServices.PropertyCollection}
Value = objectPropertyValueCollection

Welches Objekt ist nicht gesetzt?

Danke für deine Geduld:)
 

Neue Beiträge

Zurück