tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
15133
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    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
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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
     

  3. #3
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    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
     

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Vielleicht hilft dir der nachfolgende Artikel ein wenig weiter:
    http://www.c-sharpcorner.com/Code/20...dMicrosoft.asp

    Wenn nicht, dann gleich die ganze Artikelliste unter:
    http://www.c-sharpcorner.com/DirectoryServices.asp

    Da ist auf jeden Fall was für dich dabei.
     

  5. #5
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    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
     

  6. #6
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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.
     

  7. #7
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    Ähm - Ich versteh nur Bahnhof....

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

    Vielen Dank
     

  8. #8
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Ä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.
     

  9. #9
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    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
     

  10. #10
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Dir fehlen ja alle Grundlagen. Ich hab hier einen Link für dich, ist zwar für VB.NET, aber das ist kein Problem weils unter C# gleich funktioniert.

    http://www.galileocomputing.de/openb...msvb030002.htm
     

  11. #11
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    Hallo Norbert,

    Vielen Dank für deine Hilfe und auch den Galileocomputing Link - Auch wenn mir die dort beschriebene Theorie bereits bekannt war

    Ich hab den Fehler jetzt durch einen TRY/CATCH gelöst. Nun funktioniert alles wie gewünscht.

    Möchte Dir nochmals für deine Geduld und Hilfe Danken!

    Grüsse,
    bitkiller
     

  12. #12
    Avatar von hurricane
    hurricane hurricane ist offline Mitglied Silber
    Registriert seit
    Feb 2004
    Ort
    Bestensee bei Berlin
    Beiträge
    61
    Hallöchen,

    der Beitrag ist zwar schon ein paar Tage her, aber ich wollte mal erklären warum der Fehler auftritt.
    Wenn du mal bei einem Benutzer keinen "GivenName" hast, dann kommt diese Exception. Eventuell kannst du auch gegen NULL abfragen.

    Also so in der Art

    Code :
    1
    2
    3
    4
    5
    6
    
    string givenName = de.Properties["GivenName"].Value.ToString());
     
    if(givenName != null)
    {
       label1.Text = "Nachname: " + givenName;
    }


    ciao Anke
     

  13. #13
    daschii daschii ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    39
    Hallo hurricane

    Oh, vielen Dank - Jetzt weiss ich auch, woran das Problem gelegen hat

    BTW: Weisst Du, wie ich die Initialen eines AD-Users auslesen kann?
     

  14. #14
    Avatar von hurricane
    hurricane hurricane ist offline Mitglied Silber
    Registriert seit
    Feb 2004
    Ort
    Bestensee bei Berlin
    Beiträge
    61
    Zu den Initialien habe ich jetzt auf die schenlle nichts gefunden, aber mir hat folgende Seite super geholfen:

    http://www.faq-o-matic.net/content/view/60]http://www.faq-o-matic.net/content/view/60

    Dort stehen alle zur Verfügung stehende LDAP-Namen
     

  15. #15
    tequila slammer tequila slammer ist offline Mitglied Gold
    Registriert seit
    Aug 2006
    Beiträge
    204
    Hallo Leute,

    ich brauche genau die gleichen Informationen wie daschii jedoch benutze ich das Framework 2.0 und scheint die Sache schon wieder anders auszusehen. Kann mir da einer Infos zu geben?
     

Ähnliche Themen

  1. Active Directory
    Von Sephi2k06 im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 06.10.06, 10:46
  2. Zugriff auf Active Directory
    Von Benzol im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 18.10.04, 14:01
  3. Active Directory auslesen
    Von michaelwengert im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 15.07.04, 12:10
  4. Active directory
    Von stormystormy im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 26.02.04, 13:46
  5. Asp.net Active Directory
    Von stormystormy im Forum .NET Archiv
    Antworten: 4
    Letzter Beitrag: 25.12.03, 18:37