Ich hatte mal so was ähnliches, hab das so gelöst :
Damit bekomme ich alle Gruppen und deren "Untergruppen", die der Nutzer (oder das Objekt) angehört
var ADGroupList : TStringList;
Aufruf mit z.Bsp.: getGroups('LDAP://CN=Username,OU=Second Level,OU=First Level,
DC=domain,
DC=co,
DC=de');
Delphi-Quellcode:
procedure TWebModule1.getGroups(s:String);
var Obj,Grps : Variant;
tempStr : String;
i : Integer;
begin
try
Obj := GetObject(s);
except
//sicherstellen das Obj nicht leer
//......
end;
try
Grps := Obj.Get('MemberOf');
if VarType( Grps ) and varArray <> varArray then
Grps := VarArrayOf( [ Grps ] );
for i := VarArrayLowBound( Grps, 1 ) to VarArrayHighBound( Grps, 1) do
begin
tempStr := Grps[ i ];
if ADGroupList.IndexOf( tempStr ) = -1 then
begin
ADGroupList.Add(tempStr);
GetGroups('LDAP://' + tempStr);
end;
end;
except
//........
end;
end;