VC++ 关机代码

来源:互联网 发布:中国最良心的网游知乎 编辑:程序博客网 时间:2024/06/05 07:55
ExitWindowsEx(EWX_SHUTDOWN, 0);
BOOL EnableShutdownPrivilege(){HANDLE hProcess = NULL;HANDLE hToken = NULL;LUID uID = {0};TOKEN_PRIVILEGES stToken_Privileges = {0};hProcess = ::GetCurrentProcess(); //获取当前应用程序进程句柄if(!::OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken)) //打开当前进程的访问令牌句柄(OpenProcessToken函数调用失败返回值为零)return FALSE;if(!::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&uID)) //获取权限名称为"SeShutdownPrivilege"的LUID(LookupPrivilegeValue函数调用失败返回值为零)return FALSE;stToken_Privileges.PrivilegeCount = 1; //欲调整的权限个数stToken_Privileges.Privileges[0].Luid = uID; //权限的LUIDstToken_Privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; //权限的属性,SE_PRIVILEGE_ENABLED为使能该权限if(!::AdjustTokenPrivileges(hToken,FALSE,&stToken_Privileges,sizeof stToken_Privileges,NULL,NULL)) //调整访问令牌里的指定权限(AdjustTokenPrivileges函数调用失败返回值为零)return FALSE;if(::GetLastError() != ERROR_SUCCESS) //查看权限是否调整成功return FALSE;::CloseHandle(hToken);return TRUE;}//关机函数BOOL Shutdown(BOOL bForce){EnableShutdownPrivilege(); //使能关机特权函数if(bForce)return ::ExitWindowsEx(EWX_SHUTDOWN   EWX_FORCE,0); //强制关机elsereturn ::ExitWindowsEx(EWX_SHUTDOWN,0);}


0 0
原创粉丝点击