| Hauptmenü | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
| Neustart / Beenden von NT-System |
|
|
| Geschrieben von Lemmy | |
| Sonntag, 19. Februar 2006 | |
|
Quelle: Spotlight-Forum Bei Windows NT, 2000 und XP müssen zuvor noch die entsprechenden Sicherheitsattribute gesetzt werden. Dafür folgende Funktion (sie ist allerdings nicht getestet): function ExitWindows(flag:Word):Boolean; var vi : TOSVersionInfo; hToken : THandle; tp : TTokenPrivileges; h : dWord; begin result := false; vi.dwOsVersionInfoSize := SizeOf(vi); getVersionEx(vi); if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then begin OpenProcessToken(GetCurrentProcess(),Token_Adjust_Privileges,hToken); 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(flag,0); end else result := ExitWindowsEx(flag,0); end; Aufruf der Funktion - für iFlags wieder die Werte aus obiger Tabelle verwenden: if (NOT ExitWindows(iFlags)) Then begin //Fehler ausgeben, falls es nicht geklappt hat End; |
| < Zurück | Weiter > |
|---|