?
Alles gelesen und fasst richtig verstanden!
Delphi-Quellcode:
function DirectorySearch(Properties : Array of PWideChar;
SearchText : String;
Category : String;
out Items : TStringList) : Boolean;
In Properties werden alle Attribute gespeichert die gesucht werden sollen.
Wenn also der sAMAccountName vom User "Franz Mustermann" gesucht wird, dann
muss im Array das Attribut 'sAMAccountName' vorhanden sein, als auch ein Attribut
in dem der Name des Benutzers vorkommen
muss.
In diesem Fall also die Attribute 'cn' und 'sAMAccountName'.
[Edit]
Damit das ganze dann auch funktionieren soll, muss in der
function DirectorySearch
folgende Passage
Delphi-Quellcode:
if SUCCEEDED(hr) then
begin
hr := search.GetNextRow(ptrResult);
while (hr <> S_ADS_NOMORE_ROWS) do
begin
for idx := 0 to dwCount -1 do
begin
if Succeeded(search.GetColumn(ptrResult, Properties[idx], col)) then
begin
if col.pADsValues <> nil then
begin
if Included(SearchText, col.pAdsValues^.__MIDL_0010.BackLink.ObjectName) then
Items.Add(col.pszAttrName + ': ' + col.pAdsValues^.__MIDL_0010.BackLink.ObjectName);
end;
search.FreeColumn(col);
end;
end;
hr := search.GetNextRow(ptrResult);
end;
end;
durch diese
Delphi-Quellcode:
if SUCCEEDED(hr) then
begin
hr := search.GetNextRow(ptrResult);
found := false;
while (hr <> S_ADS_NOMORE_ROWS) do
begin
for idx := 0 to dwCount -1 do
begin
if Succeeded(search.GetColumn(ptrResult, Properties[idx], col)) then
begin
if col.pADsValues <> nil then
begin
if not found then
begin
found := Included(SearchText, col.pAdsValues^.__MIDL_0010.BackLink.ObjectName);
if found then
Items.Add(col.pszAttrName + ': ' + WideCharToString(col.pAdsValues^.__MIDL_0010.BackLink.ObjectName));
end
else
Items.Add(col.pszAttrName + ': ' + WideCharToString(col.pAdsValues^.__MIDL_0010.BackLink.ObjectName));
end;
search.FreeColumn(col);
end;
end;
hr := search.GetNextRow(ptrResult);
found := false;
end;
end;
ersetzt werden. Nicht vergessen die Variable found : Boolean einzufügen.
Und Bitte nur Attribute verwenden die es gibt, es ist dies bezüglich keine Fehlerbehandlung vorhanden.