16,472
社区成员
发帖
与我相关
我的任务
分享
/*------------------Operate--------------------*/
void Operate()
{
HANDLE hToken;
TOKEN_PRIVILEGES tTknPrlg;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tTknPrlg.Privileges[0].Luid);
tTknPrlg.PrivilegeCount = 1;
tTknPrlg.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tTknPrlg, 0, (PTOKEN_PRIVILEGES)NULL, 0);
switch (gSintRunStat)//待机、关机、重启的状态
{
case 0:
{
ExitWindowsEx(EWX_SHUTDOWN | EWX_POWEROFF, 0);
break;
}
case 1:
{
SetSuspendState(true, true, true);
break;
}
case 2:
{
ExitWindowsEx(EWX_REBOOT, 0);
break;
}
default:
break;
}
}
}