Thema: Delphi AD users of group

Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: AD users of group

  Alt 19. Okt 2011, 17: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)
  Mit Zitat antworten Zitat