#include "Windows.h"
//強制關閉計算機
bool systemShutDown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//擷取程序标志
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
return false;
}
//擷取關機特權的LUID
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
//擷取這個程序的關機特權
AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS) {
return false;
}
// 強制關閉計算機
if ( !ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) {
return false;
}
return true;
/*
// 強制重新開機計算機
if ( !ExitWindowsEx(EWX_REBOOT| EWX_FORCE, 0))
return false;
return true;
*/
}