Ich dachte LogonUser hat auch noch ein Result, welches man prüfen könnte.
Im
MSDN steht nicht drin, daß Token auch im Fehlerfall immer auf 0 gesetzt wird.
Delphi-Quellcode:
function CheckUserAccount(Username, Password, Domain : string) : boolean;
var token: THandle;
begin
if LogonUser(PChar(Username), PChar(Domain), PChar(Password),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, Token) then
begin
CloseHandle(Token);
Result := Token <> 0;
end else
Result := False;
end;
Delphi-Quellcode:
function CheckUserAccount(Username, Password, Domain : string) : boolean;
var token: THandle;
begin
Result := LogonUser(PChar(Username), PChar(Domain), PChar(Password),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, Token) and (Token <> 0);
if Result then
CloseHandle(Token);
end;