Thema: Delphi AD member, memberOf

Einzelnen Beitrag anzeigen

Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: AD member, memberOf

  Alt 28. Jan 2009, 06:23
Zitat von hoika:
definier mal alle in GetMem benutzen Variablen lokal in GetMem.
Und du hast natürlich recht! Funktioniert nun prima!
Hier mein Code:

Delphi-Quellcode:
procedure TForm1.ListMemberOfTR(strGroup: String; list: TStringList);
procedure getMem(obj,strPath:String);
var
  i:Integer;
  arrVar: Array of variant;
  arrDis: Array of variant;
  strTxt,strSearch: String;
  strFilter, strAttributes, strADS, strBase : string;
  rs, conn, com : Variant;
begin
  try
    conn := CreateOleObject('ADODB.Connection');
    com := CreateOleObject('ADODB.Command');
    conn.Provider := 'ADsDSOObject';
    conn.open;
    com.ActiveConnection := conn;
    strBase := '<LDAP://thun.lan>';
    Application.ProcessMessages;
    strFilter := '(&(objectClass=group)(cn='+obj+'))';
    strAttributes := 'memberOf';
    strADS := strBase + ';' + strFilter + ';' + strAttributes + ';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,0);
      end;
    end;
    for i := Low(arrVar) to High(arrVar) -1 do
    begin
      strTxt := arrVar[i];
      strSearch := MidStr(strTxt,Pos('=',strTxt)+1,Pos(',',strTxt)-Pos('=',strTxt)-1);
      list.Add(strPath + ' \ ' + strSearch);
      getMem(strSearch, strPath + ' \ ' + strSearch);
    end;
  finally
    Rs := NULL;
    com := NULL;
    conn.Close;
    conn := NULL;
  end;
end;
begin
  list.BeginUpdate;
  try
    GetMem(strGroup,strGroup);
  finally
    list.EndUpdate;
  end;
end;
vielen Dank hoika!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat