//关机
if(AfxMessageBox("是否要关闭计算机?",MB_YESNO)==IDYES)
{
HANDLE htoken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&htoken);
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);
::ExitWindowsEx(EWX_POWEROFF,NULL);
}
//重新启动
if(AfxMessageBox("是否要重新启动计算机?",MB_YESNO)==IDYES)
{
HANDLE htoken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&htoken);
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);
::ExitWindowsEx(EWX_REBOOT,NULL);
}
//注销
if(AfxMessageBox("是否需要注销?",MB_YESNO)==IDYES)
::ExitWindowsEx(EWX_LOGOFF,NULL);
转载于:https://www.cnblogs.com/wangliang651/archive/2006/06/24/434460.html