uses Windows;
var
hToken, Dummy: Cardinal;
Privileges: packed record
Count: Cardinal;
Luid: Int64;
Attributes: Cardinal;
end = (Count: 1; Attributes: SE_PRIVILEGE_ENABLED);
begin
if OpenProcessToken(DWORD(-1), TOKEN_ADJUST_PRIVILEGES, hToken) then begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', Privileges.Luid); AdjustTokenPrivileges(hToken, False, PTokenPrivileges(@Privileges)^, SizeOf(Privileges), nil, Dummy); CloseHandle(hToken); end;
SetSystemPowerState(False, True); end.
function SetSystemPowerState(fSuspend, fForce: LongBool): LongBool;