REBOOT
Вод
код, работающий под Windows любой сборки:
uses Windows procedure RebootSystem; var handle,
ph: THandle; pid: DWORD; luid:
TLargeInteger; dummy, priv: TOKEN_PRIVILEGES; ver:
TOSVERSIONINFO; begin ver.dwOSVersionInfoSize
:= Sizeof(ver); GetVersionEx(ver); if
ver.dwPlatformId=VER_PLATFORM_WIN32_NT
then begin pid := GetCurrentProcessId; ph
:= OpenProcess(PROCESS_ALL_ACCESS, false,
pid); if OpenProcessToken(ph, TOKEN_ADJUST_PRIVILEGES,
handle) then if LookupPrivilegeValue(nil,
'SeShutdownPrivilege', luid) then begin priv.PrivilegeCount
:= 1; priv.Privileges[0].Attributes
:= SE_PRIVILEGE_ENABLED; priv.Privileges[0].Luid
:= luid; AdjustTokenPrivileges(handle,
false, priv, 0, dummy, pid); end; end; ExitWindowsEx(EWX_REBOOT,
0); end;
Вот
и всё. Если что не удалось - пишите.
|