Jja, das habe ich auch schon überlegt. Ich habe es jetzt so:
Delphi-Quellcode:
function EnumUsers(const Server: WideString; filter: DWORD; Callback: TEnumUers; Data: Pointer): DWORD;
var
ui1 : PUserInfo1;
pWork : Pointer;
EntriesRead : DWORD;
EntriesTotal : DWORD;
NetError : DWORD;
Loop : Integer;
begin
ui1 := nil;
pWork := nil;
try
NetError := NetUserEnum(PWideChar(Server), 1, filter, ui1, MAX_PREFERRED_LENGTH, EntriesRead, EntriesTotal, nil);
if (NetError = NERR_SUCCESS) and (EntriesRead > 0) then
begin
pWork := ui1;
if Assigned(Callback) then
begin
for Loop := 0 to EntriesRead - 1 do
begin
if not Callback(PUserInfo1(ui1)^.usri1_name, EntriesRead, Data) then
break;
//Inc(Integer(ui1), sizeof(PUserInfo1));
end;
end;
end;
finally
NetApiBufferFree(pWork);
end;
Result := NetError;
end;
Aber dann bekomme ich fünf mal den Admin. Das ist das erste Konto von fünf bei mir. Kommentiere ich es nicht aus, bekomme ich nur den ersten Benutzer und die folgenden sind nil. Und dann haut es mir den Code um die Ohren.