Einzelnen Beitrag anzeigen

Benutzerbild von cherry
cherry

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

LDAP Abfrage. Kein Resultat wenn Bindestrich in Gruppenname!

  Alt 24. Aug 2009, 10:44
Hallo

Ich lese mit folgender Funktion die Mitglieder einer Gruppe auf. Dies funktioniert auch wunderbar, bis ich für "MyObjName" einen Gruppenname angebe, der einen Bindestrich "-" enthält. Dann ist das Ergebnis leer... An was kann das liegen?

Delphi-Quellcode:
{*------------------------------------------------------------------------------
  this function lists the members of a group

  @param  ADsPath      ldap path to active directory
  @param  MyObjClass    specifies the object class in which you perform
                        the search
  @param  MyObjName    the name of the object you search after
  @param  list          this list is containing the search result
  @return              returns wether the search was a success or not
-------------------------------------------------------------------------------}

function ListMemberOf(ADsPath, MyObjClass, MyObjName: String; list: TStringList): Boolean;
var rs, conn, com : Variant;
    strFilter, strAttributes, strADS : string;
    arrVar: Array of variant;
    SearchObj: String;
    i:Integer;
    strTxt,strValue:String;
begin
  conn := CreateOleObject('ADODB.Connection');
  com := CreateOleObject('ADODB.Command');
  Result := True;
  try
    conn.Provider := 'ADsDSOObject';
    conn.open;
    com.ActiveConnection := conn;
    if MyObjClass = 'userthen
      SearchObj := 'sAMAccountName'
    else
      SearchObj := 'CN';
    strFilter := '(&(objectClass='+MyObjClass+')('+SearchObj+'='+MyObjName+'))';
    strAttributes := 'memberOf';
    strADS := '<'+ADsPath+'>;' + 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,1);
        arrVar[0] := 'is not member of a group ...';
      end;
    end
    else
      Result := False;
    Rs := NULL;
  finally
    com := NULL;
    conn.Close;
    conn := NULL;
  end;
  for i := 0 to Length(arrVar) - 1 do
  begin
    strTxt := arrVar[i];
    strValue := MidStr(strTxt,Pos('=',strTxt)+1,Pos(',',strTxt)-Pos('=',strTxt)-1);
    list.Add(strValue);
  end;
end;
Danke schon ma...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat