Forum: PC-Programmierung ADS User und Gruppen auslesen mit LDAP?


von ldap (Gast)


Lesenswert?

Hallo, ich beschäftige mich gerade mit der Programmierung (.NET) einer 
Funktion, die mir sagt, ob ein Benutzer in einer Gruppe ist, ggf. in 
einer Untergruppe (rekursiv). Ich will es auch verstehen, nicht nur 
irgendein Beispiel kopieren.

Also ich bin so weit:

Domain-Controller ist ein Windows 2008 Server. Ich erhalte Zugriff auf 
den ADS so:

Dim DirectoryRoot As New DirectoryEntry("LDAP://mein-pdc")

Dazu die erste Frage: "mein-pdc" ist der DNS-Name von meinem PDC. Es 
funktioniert auch, aber wie würde ich das in korrekter LDAP-Notation 
schreiben? Also so CN=... Ich verstehe die Syntax "LDAP://mein-pdc" 
nicht.


Dann suche ich meine Gruppe:

Dim DirectorySearch As New DirectorySearcher(DirectoryRoot, 
"(CN=gesuchte_gruppe")")
Dim DirectorySR As SearchResult = DirectorySearch.FindOne()

auch das funktioniert, und das verstehe ich auch.


Dann hole ich mir die Eigenschaften der gefundenen Gruppe:

Dim ResultPropertyCollection As ResultPropertyCollection = 
DirectorySR.Properties


und schließlich durchlaufe ich die Property mit dem Namen "Member":

For Each GroupMemberDN In ResultPropertyCollection("member")
   Debug.Print(GroupMemberDN)
next


Ich erhalte sowas zurück:

CN=obergruppe,OU=Anwendungen,DC=privat1,DC=privat2,DC=privat3
CN=Jan Sagichnich,OU=Benutzer,DC=privat1,DC=privat2,DC=privat3


Aber was ist das vom Typ her, was ich da bekommen habe? Ich weiß, dass 
das erste eine Gruppe ist und das zweite ein Benutzer, aber wie finde 
ich das per Programm raus (um dann den Namen zu vergleichen oder in die 
Rekursion einzusteigen)?


Ich weiß, manche Sachen kann man auch kompakter schreiben, aber es hilft 
mir zu verstehen..

von Christopher (Gast)


Lesenswert?

Indem du ein neues DirectoryEntry mit 
"CN=obergruppe,OU=Anwendungen,DC=privat1,DC=privat2,DC=privat3" 
erstellst und dann die Eigenschaft DirectoryEntry.SchemaEntry.Name 
überprüfst.
http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.schemaentry.aspx

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.