VC6下采用ShellExecuteEx提升管理员权限

来源:互联网 发布:罗振宇说人工智能 编辑:程序博客网 时间:2024/06/08 08:23
bool   IsOsVersionVistaOrGreater(){    OSVERSIONINFOEX    ovex;    CHAR  szVersionInfo[1024];    *szVersionInfo = '\x00';    //设置参数的大小,调用并判断是否成功    ovex.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);    if( !GetVersionEx(  (LPOSVERSIONINFO) (&ovex)  )  )    {        return false;    }    //通过版本号,判断是否是vista及之后版本    if(ovex.dwMajorVersion > 5)    {        return true;    }    else    {        return false;    }}//检查并根据系统版本选择打开程序方式void ShellExecuteExOpen(CString appName, CString appPath, CString strParameter){    if(IsOsVersionVistaOrGreater())    {        SHELLEXECUTEINFO sei={sizeof(SHELLEXECUTEINFO)};        sei.fMask  = SEE_MASK_NOCLOSEPROCESS;        sei.lpVerb = _T("runas");        sei.lpFile = appName;        sei.lpDirectory = appPath;sei.lpParameters = strParameter;        sei.nShow = SW_SHOWNORMAL;        if(!ShellExecuteEx(&sei))        {            DWORD dwStatus=GetLastError();            if(dwStatus==ERROR_CANCELLED)            {AfxMessageBox(_T("提升权限被用户拒绝"));            }            else if(dwStatus==ERROR_FILE_NOT_FOUND)            {AfxMessageBox(_T("所要执行的文件没有找到"));            }else{AfxMessageBox(_T("执行成功"));}        }    }    else    {        appPath.Replace(L"\\",L"\\\\");        ShellExecute(NULL, _T("open"), appName, strParameter, appPath, SW_SHOWNORMAL);    }}


参考

  1. 程序调用ShellExecuteEx打开其他程序(兼容UAC获取管理员权限)
  2. VS2010与Win7共舞:UAC与数据重定向
  3. c++获取操作系统的版本(vs2013)
  4. 利用ShellExecuteEx手动提升用户特权,以管理员权限来运行程序
  5. MFC编程:Win7下支持弹出UAC对话框获取管理员权限
  6. VC程序提升管理员权限
  7. VS为VC++添加UAC控制(VC程序默认管理员运行)


0 0
原创粉丝点击