VC6下采用ShellExecuteEx提升管理员权限
2015-09-22 14:45
531 查看
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); } }
参考
程序调用ShellExecuteEx打开其他程序(兼容UAC获取管理员权限)
VS2010与Win7共舞:UAC与数据重定向
c++获取操作系统的版本(vs2013)
利用ShellExecuteEx手动提升用户特权,以管理员权限来运行程序
MFC编程:Win7下支持弹出UAC对话框获取管理员权限
VC程序提升管理员权限
VS为VC++添加UAC控制(VC程序默认管理员运行)
相关文章推荐
- linux shell脚本攻略总结(一)
- 高级Bash脚本编程指南
- [9-13]Shell系列6――取算数运算数值
- linux下shell编程基础
- shell 冒泡排序 数组的使用
- Linux Shell脚本实现根据进程名杀死进程
- /bin/bash^M: bad interpreter: 没有那个文件或目录
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Firefox OS启动过程分析-Shell入口
- Linux Shell 命令 简介
- Shell编程
- 9-13 shell工作原理和编程中知识点总结
- Shell 工作原理
- Linux Shell 文本处理工具集锦
- 2015年9月13日和15日【shell、sed&awk 的使用(一)】-JY1506402-19+liuhui880818
- bash编程之:函数与数组
- ShellExecute
- Linuxshell脚本之if条件判断
- [9-13]Shell系列5――条件测试和运算符
- 使用shell统计字符串出现的次数,并从大到小进行排序显示