Ich greife auf das AD mit TADOQuery und LDAP zu + hatte da kein Problem mit Adminrechten oder so.
Dieses zB um den SID des aktuellen UISers zu bekommen:
Delphi-Quellcode:
var
adoConnectionData: TADOConnection;
qQuery: TAdoQuery;
s: string;
sSql: string;
v: variant;
oSID: PSID;
...
begin
adoConnectionData := TADOConnection.Create(nil);
qQuery := TADOQuery.Create(nil);
qQuery.Connection := adoConnectionData;
adoConnectionData.Name := 'adoConnectionData';
adoConnectionData.ConnectionString := 'Mode=Read;';
adoConnectionData.LoginPrompt := False;
adoConnectionData.Provider := 'ADsDSOObject';
adoConnectionData.Connected := True;
sSql := 'select objectSID from ''LDAP://' + sDomain + ''' where objectClass=''person'' and sAMAccountName=' + QuotedStr(sUSername);
qQuery.SQL.Text := sSql;
qQuery.Open;
v := qQuery.Fields[0].Value;
oSID := VarArrayLock(v);
s := SIDToString(oSID);
VarArrayUnlock(v);
Result := s;
end;