du kannst den aktuellen benutzer ausloggen aber einloggen muss er sich schon selber.
zum ausloggen kannst du diesen code verwenden:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| function ExWindows(const AFlag: Word): Boolean; var vi : TOSVersionInfo; hToken : THandle; tp : TTokenPrivileges; h : DWord; begin result:= false;
vi.dwOSVersionInfoSize:=SizeOf(vi);
if GetVersionEx(vi) then begin if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then begin if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then begin LookupPrivilegeValue(nil,'SeShutdownPrivilege',tp.Privileges[0].Luid); tp.PrivilegeCount := 1; tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; h := 0; AdjustTokenPrivileges(hToken,False,tp,0,PTokenPrivileges(nil)^, h); CloseHandle(hToken); result := ExitWindowsEx(Aflag, 0); end; end else begin Result := ExitWindowsEx(Aflag, 0); end; end; end; |
diese funktion verwendet die
EXITWINDOWSEX funktion der windows-API.
alles was du machen musst ist, als flag
EWX_LOGOFF zu verwenden (siehe auch MSDN link).
die funktion funktioniert übrigends bei allen windowsversionen von win95 bis XP.