2024年4月12日发(作者:)

MFC关机、注销、重启

一、 关机

void CMainFrame::ShutDown()

{

//获取操作系统信息

DWORD dwVersion = GetVersion();

if (dwVersion < 0x80000000) // Windows NT

{

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

if (!OpenProcessToken(GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))

return;

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

&eges[0].Luid);

egeCount = 1; // one privilege to set

eges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)

NULL, 0);

if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))

return;

}

else

{

if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))

return;

}