首页 > 代码库 > mfc关机函数

mfc关机函数

 1 //关机函数 2 BOOL CShutdownDlg::SystemShutdown(void){  3     HANDLE hToken;   4     TOKEN_PRIVILEGES tkp;//设置访问特权变量   5     //OpenProcessToken 获取进程的访问令牌   6     if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken))   7     {   8         MessageBox("获取访问令牌失败!");   9         return FALSE;  10     }  11     // LookupPrivilegeValue查看系统的特权值  12     LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);  13     tkp.PrivilegeCount = 1; // 指定特权数组个数1  14     tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;//启用特权  15     // AdjustTokenPrivileges的作用是通知Windows NT修改本进程的权利  16     AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);//启用当前访问令牌的特权  17     if (GetLastError() != ERROR_SUCCESS) //失败  18     {  19         MessageBox("获取权限失败!");  20         return FALSE;  21     }  22     if (!ExitWindowsEx(EWX_SHUTDOWN, 0)) //参数在这里设置。EWX_SHUTDOWN 为正常关机,强行退出为WINDOWSEWX_FORCE。  23         return FALSE;  24     return TRUE;  25 }

 

mfc关机函数