Registriert seit: 14. Nov 2005
561 Beiträge
RAD-Studio 2009 Ent
|
LDAP Abfrage. Kein Resultat wenn Bindestrich in Gruppenname!
24. Aug 2009, 11: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 = ' user' then
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!?
|
|
Zitat
|