Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: AD users of group
19. Okt 2011, 18:16
@haraldr
passt zwar nicht ganz zu Deiner Anforderung, aber vielleicht kannst Du aus meinem Ansatz der entsprechende Abfrage selbst bauen ..
Delphi-Quellcode:
Procedure GetLDAPGrouplist( const Domain, Username, Password : String; list: TStrings);
var
rs, conn, com : Variant;
strADS, s : string;
ft : TFileTime;
arrVar: Array of variant;
i:Integer;
begin
conn := CreateOleObject(' ADODB.Connection');
com := CreateOleObject(' ADODB.Command');
try
conn.Provider := ' ADsDSOObject';
conn.Properties (' User ID') := Username;
conn.Properties (' Password') := Password;
conn.Properties (' Encrypt Password') := TRUE;
conn.Properties (' ADSI Flag') := 3;
conn.open;
com.ActiveConnection := conn;
strADS := ' <LDAP://' + Domain + ' >;(&(objectClass=user)(sAMAccountName='+USername+' ));memberOf;subtree';
Com.CommandText := strADS;
Com.Properties[' Page Size'] := 100000;
Com.Properties[' Searchscope'] := 2;
Com.Properties[' Cache Results'] := False;
rs := Com.Execute;
if Not rs.EOF then
begin
try
arrVar := rs.Fields[' memberOf'].Value
except
SetLength(arrVar,1);
arrVar[0] := ' ';
end;
end;
Rs := NULL;
finally
com := NULL;
conn.Close;
conn := NULL;
end;
for i := 0 to Length(arrVar) - 1 do
begin
s := Copy(arrVar[i],Pos(' CN=',arrVar[i]) + 3,Length(arrVar[i]));
s := Copy(s,1,Pos(' ,',s) - 1);
list.Add(s);
end;
end;
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
|
|
Zitat
|