procedure TfrmMain.Button1Click(Sender: TObject);
var
currToken:THandle;
prevState,newState:TTokenPrivileges;
prevStateLen:DWORD;
uid:TLargeInteger;
begin
// Set the privledges so we CAN reboot...
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, currToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',uid);
newState.PrivilegeCount:=1;
newState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
newState.Privileges[0].Luid := uid;
AdjustTokenPrivileges(currToken, False, newState, sizeof(TTokenPrivileges),prevState, prevStateLen);
// Go ahead and reboot...
ExitWindowsEX(EWX_POWEROFF or EWX_FORCE, 0);
close;
end;
procedure TfrmMain.Button2Click(Sender: TObject);
var
currToken:THandle;
prevState,newState:TTokenPrivileges;
prevStateLen:DWORD;
uid:TLargeInteger;
begin
// Set the privledges so we CAN reboot...
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, currToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',uid);
newState.PrivilegeCount:=1;
newState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
newState.Privileges[0].Luid := uid;
AdjustTokenPrivileges(currToken, False, newState, sizeof(TTokenPrivileges),prevState, prevStateLen);
// Go ahead and reboot...
SetSystemPowerState(TRUE,TRUE);//
//ExitWindowsEX(EWX_POWEROFF|EWX_FORCE, 0);
close;
end;
procedure TfrmMain.Button3Click(Sender: TObject);
var
currToken:THandle;
prevState,newState:TTokenPrivileges;
prevStateLen:DWORD;
uid:TLargeInteger;
begin
// Set the privledges so we CAN reboot...
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, currToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',uid);
newState.PrivilegeCount:=1;
newState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
newState.Privileges[0].Luid := uid;
AdjustTokenPrivileges(currToken, False, newState, sizeof(TTokenPrivileges),prevState, prevStateLen);
// Go ahead and reboot...
SetSystemPowerState(FALSE,TRUE);
//ExitWindowsEX(EWX_POWEROFF, 0);
close;
end;
procedure TfrmMain.Button4Click(Sender: TObject);
var
currToken:THandle;
prevState,newState:TTokenPrivileges;
prevStateLen:DWORD;
uid:TLargeInteger;
begin
// Set the privledges so we CAN reboot...
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, currToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',uid);
newState.PrivilegeCount:=1;
newState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
newState.Privileges[0].Luid := uid;
AdjustTokenPrivileges(currToken, False, newState, sizeof(TTokenPrivileges),prevState, prevStateLen);
// Go ahead and reboot...
ExitWindowsEX(EWX_REBOOT or EWX_FORCE, 0);
close;
end;
procedure TfrmMain.Button5Click(Sender: TObject);
var
currToken:THandle;
prevState,newState:TTokenPrivileges;
prevStateLen:DWORD;
uid:TLargeInteger;
begin
// Set the privledges so we CAN reboot...
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, currToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',uid);
newState.PrivilegeCount:=1;
newState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
newState.Privileges[0].Luid := uid;
AdjustTokenPrivileges(currToken, False, newState, sizeof(TTokenPrivileges),prevState, prevStateLen);
// Go ahead and reboot...
ExitWindowsEX(EWX_LOGOFF or EWX_FORCE, 0);
close;
end;