Active Directory Zugriff / Frage



  • Hallo an alle,

    ich habe gerade das beispiel von aspheute.com über den Zugriff auf das Active Directory durchgearbeitet.

    Nun habe ich im AD unter der OU - Users eine neue Gruppe angelegt und dieser Gruppe User zugewiesen.

    Wie kann ich denn jetzt die User auslesen, welche sich in dieser Gruppe befinden?

    DirectoryEntry entry = new DirectoryEntry("LDAP://lfv.local/CN=Users, DC=lfv, DC=local", "test", "test" ); //Zugriff auf OU Users
     DirectoryEntry dcUsers = entry.Children.Find("CN=lfm"); //Meine Gruppe
     DirectorySearcher search = new DirectorySearcher(dcUsers);
     search.Filter = "(&(objectClass=user))";
     foreach (SearchResult result in search.FindAll())
     {
             GUIDs[i] = result.GetDirectoryEntry().Guid.ToString();
             i++;
     }
    

    Bei dieser Lösung hat result stets NULL

    Gruß

    CrazyPlaya



  • Ich habe bisher rausgefunden, da DirectoryEntry keine Member hat muss man das NativeObject in diesem Fall von dcUsers in ActiveDs.IADsUser casten.

    Nur wie caste ich jetzt mit CSharp auf diesen Typ?
    Ich habe bereits versucht mit Convert.ChangeType(dcUsers.NativeObject, ActiveDs.IADsUser) zu casten doch das funzt so nicht.

    In VB.NET kann man es über CType casten. Bsp: CType(dcUsers.NativeObject, ActiveDs.IADSUser).
    Gibt es eine ähnliche Funktion in C#?

    Wenn ich das Casting hinbekommen habe, habe ich aber immer noch keine Ahnung wie ich dann weiter vorgehen muss.

    Hoffe mir kann da jemand weiterhelfen



  • nach langem googeln, so lässt sich lösen

    DirectoryEntry entry = new DirectoryEntry("LDAP://lfv.local/CN=Users, DC=lfv, DC=local", "test", "test" );
    DirectoryEntry dcUsers = entry.Children.Find("CN=lfm");
    
    object members = dcUsers .Invoke("Members", null);
    foreach(object member in (IEnumerable)members)
    {
        DirectoryEntry x = new DirectoryEntry(member);
        Console.WriteLine(x.Name);
    }
    

Anmelden zum Antworten