提权后重启应用

void CAAADlg::OnSysrise()
{
    // TODO:  在此添加命令处理程序代码
    ::ShowWindow(m_hWnd, SW_HIDE);
    // 2. 获取当前程序路径
    WCHAR szApplication[MAX_PATH] = { 0 };
    DWORD cchLength = _countof(szApplication);
    QueryFullProcessImageName(GetCurrentProcess(), 0,
        szApplication, &cchLength);
    // 3. 以管理员权限重新打开进程
    SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };
    sei.lpVerb = L"runas";      // 请求提升权限
    sei.lpFile = szApplication; // 可执行文件路径
    sei.lpParameters = NULL;          // 不需要参数
    sei.nShow = SW_SHOWNORMAL; // 正常显示窗口
    if (ShellExecuteEx(&sei))
        exit(0);
    else
        ::ShowWindow(m_hWnd, SW_SHOWNORMAL);

}
原文地址:https://www.cnblogs.com/yifi/p/6527926.html