您的位置:首页 > 其它

MFC-关机注销重启

2016-03-29 13:56 357 查看
关机注销重启都是windows的重要操作,所以调用ExitWindowsEx这个函数之前一定要对当前进程进行提权,就是提升权限,使得当前的进程能操作这些重要的函数.

1.提权

//提权函数
BOOL AdjustPrivilege()
{
BOOL bRet = FALSE;
TOKEN_PRIVILEGES tp = { 0 };//令牌权限结构
HANDLE hToken = nullptr;//令牌句柄

do
{
//打开当前进程令牌,并且获取它              //令牌权限修改和查询
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|
TOKEN_QUERY,&hToken))
break;
//获取关机注销重启的LUID(Locally Unique Identifier),局部唯一标识
if (!LookupPrivilegeValue(nullptr,SE_SHUTDOWN_NAME,&tp.Privileges[0].Luid))
break;
tp.PrivilegeCount = 1;//修改权限的个数
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;//激活SE_SHUTDOWN_NAME这个权限
//提升权限//FALSE表示可以修改权限//把需要修改的权限传进来
if(!AdjustTokenPrivileges(hToken,FALSE,&tp,0,(PTOKEN_PRIVILEGES)nullptr,0))
break;
bRet = TRUE;
} while (FALSE);
if (hToken)
CloseHandle(hToken);
return bRet;
}


2.关机

//提权
AdjustPrivilege();
ExitWindowsEx(EWX_SHUTDOWN,0);


3.注销

//提权
AdjustPrivilege();
ExitWindowsEx(EWX_LOGOFF, 0);


4.重启

//提权
AdjustPrivilege();
ExitWindowsEx(EWX_REBOOT, 0);


5.还有很多的操作,只要对其进行提权就可以了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: