Hallo,
Ich verwende die
Unit adshlp von agnisoft und die importierte Typbibliothek Active DS Type Library.
Ich bin mittlerweile soweit, dass ich aus der Domäne die Benutzer auslesen kann und in welchen Gruppen sie sind bzw. umgekehrt.
Jetzt möchte ich noch die Rechte der Benutzer/Gruppen auslesen können.
In der ActiveDS_TLB stehen die Konstanten für die Rechte.
Auf
msdn hab ich gefunden, dass die Rechte das bei einem AccessControlEntry als AccessMask angegeben sind.
http://
msdn.microsoft.com/en-us/library/aa772285(v=VS.85).aspx
Aber wie kann ich damit die Rechte abfragen und wie verknüpfe ich das AccessControlEntry mit einem IADS-Objekt? User/Gruppe/Container?
Mit den Untergruppen habe ich auch noch ein Problem, eine Gruppe lese ich aus dem IADSContainer-Objekt aus, indem ich mit
Code:
while EnumVariant.Next(1, V, w) = S_OK do //V:OleVariant, w: Dword
den Container durchsuche.
Code:
aIADs:= IDispatch(V) as IADs;
Mit aIADs.Class_ stelle ich dann fest, ob es sich um eine Gruppe handelt, auf die ich dann mit ADSGetObject aus der adshlp mit aIADs.adspath als Pfad zugreife.
Über die Eigenschaft Members kann ich dann die untergeordneten Objekte auslesen, allerdings nicht auf alle mit ADSGetObject darauf zugreifen, weil einige einen anderen Pfad haben, z.Bsp. statt
WinNT://domäne ... nicht mehr die Domäne hinter dem
WinNT:// sondern
WinNT://NT-AUTORITÄT ... .
Was hat es mit diesen Untergruppen auf sich?
Auf den Container greife ich mit
Code:
ADsOpenObject('
WinNT://'+Domäne, Username, Password, 1, IADsContainer, domain);
zu. Warum klappt das nicht mit LDAP://cn=... ? Wie kann ich auf die Domäne mit LDAP zugreifen? Würde sich durch LDAP eins der beiden anderen Probleme besser beheben lassen?