Ich rufe obige
API-Funktion wie folgt auf:
Delphi-Quellcode:
type
NET_API_STATUS = DWORD;
type
TUserInfo1 = record
usri1_name: LPWSTR;
usri1_password: LPWSTR;
usri1_password_age: DWORD;
usri1_priv: DWORD;
usri1_home_dir: LPWSTR;
usri1_comment: LPWSTR;
usri1_flags: DWORD;
usri1_script_path: LPWSTR;
end;
PUserInfo1 = ^TUserInfo1;
const
NERR_Success = 0;
USER_PRIV_ADMIN = 2;
function NetUserGetInfo(servername: LPCWSTR; username: LPCWSTR; level: DWORD; var bufptr: PUserInfo1): NET_API_STATUS;
stdcall; external 'netapi32.dll' name 'NetUserGetInfo';
function IsAdminByNetUserGetInfo: Boolean;
var
CurrentUser : string;
ui1 : PUserInfo1;
begin
Result := False;
CurrentUser := GetCurrUserName;
if NetUserGetInfo(nil, PWideChar(WideString(CurrentUser)), 1, ui1) = NERR_Success then
begin
Result := ui1.usri1_priv = USER_PRIV_ADMIN;
NetApiBufferFree(ui1);
end
else
Writeln(GetLastError);
end;
Als Fehlermeldung bekomme ich
Zitat:
Überlappender E/A-Vorgang wird verarbeitet.
, was ich nicht so ganz verstehe. Ich habe diese Funktion schon öfters benutzt und sehe nicht, was ich hier anders bzw. falsch mache.