MFC-关机注销重启

MFC 专栏收录该内容
60 篇文章 2 订阅

关机注销重启都是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.还有很多的操作,只要对其进行提权就可以了.

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值