Var
PreviosPrivileges: ^TTokenPrivileges;
TokenPrivileges: TTokenPrivileges;
ProcessHandle: THandle;
tmp: Integer;
begin
if not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,ProcessHandle) then Exit;
LookupPrivilegeValue('', 'SeShutdownPrivilege', TokenPrivileges.Privileges[0].Luid);
TokenPrivileges.PrivilegeCount:=1;
TokenPrivileges.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
tmp:=0;
PreviosPrivileges:=nil;
AdjustTokenPrivileges(ProcessHandle, False, TokenPrivileges, 0, PreviosPrivileges^ ,tmp);
if not GetLastError()=ERROR_SUCCESS then Exit;
if not InitiateSystemShutdown('', '', 0, True, True) then Exit;
TokenPrivileges.Privileges[0].Attributes:=0;
AdjustTokenPrivileges(ProcessHandle, False, TokenPrivileges, 0,PreviosPrivileges^ ,tmp);
End;
Var
PreviosPrivileges: ^TTokenPrivileges;
TokenPrivileges: TTokenPrivileges;
ProcessHandle: THandle;
tmp: Integer;
begin
if not OpenProcessToken(GetCurren
LookupPrivilegeValue('', 'SeShutdownPrivilege', TokenPrivileges.Privileges
TokenPrivileges.PrivilegeC
TokenPrivileges.Privileges
tmp:=0;
PreviosPrivileges:=nil;
AdjustTokenPrivileges(Proc
if not GetLastError()=ERROR_SUCCE
if not InitiateSystemShutdown('',
TokenPrivileges.Privileges
AdjustTokenPrivileges(Proc
End;