function Logon(const Username, Password: string): Boolean;
var
hToken : THandle;
begin
Result := LogonUser(PChar(Username), nil, PChar(Password),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken);
if Result then
begin
Result := ImpersonateLoggedOnUser(hToken);
RevertToSelf;
end
else
RaiseLastOSError;
end;