程序调用ShellExecuteEx打开其他程序(兼容UAC获取管理员权限)
2017-03-13 13:32
1846 查看
参考文章:http://blog.csdn.net/xmnathan/article/details/39498431
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#pragma warning(disable: 4996)
//检查系统版本是否是Vista或更高的版本
bool IsOsVersionVistaOrGreater()
{
OSVERSIONINFOEX ovex = { sizeof(OSVERSIONINFOEX), 0 };
if (!GetVersionEx((LPOSVERSIONINFO)(&ovex)))
{
return false;
}
//通过版本号,判断是否是vista及之后版本
if (ovex.dwMajorVersion > 5)
{
return true;
}
else
{
return false;
}
}
//检查并根据系统版本选择打开程序方式
void MyShellExecuteEx(LPCTSTR lpFile, LPCTSTR lpParameters)
{
if (IsOsVersionVistaOrGreater())
{
SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFOW), 0 };
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.nShow = SW_SHOWNORMAL;
sei.lpFile = lpFile;
sei.lpParameters = lpParameters;
sei.lpVerb = _T("runas");
ShellExecuteEx(&sei);
}
else
{
ShellExecute(NULL, _T("open"), lpFile, lpParameters, NULL, SW_SHOWNORMAL);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
MyShellExecuteEx(_T(".\\Setup.exe"), _T("/S"));
return 0;
}
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#pragma warning(disable: 4996)
//检查系统版本是否是Vista或更高的版本
bool IsOsVersionVistaOrGreater()
{
OSVERSIONINFOEX ovex = { sizeof(OSVERSIONINFOEX), 0 };
if (!GetVersionEx((LPOSVERSIONINFO)(&ovex)))
{
return false;
}
//通过版本号,判断是否是vista及之后版本
if (ovex.dwMajorVersion > 5)
{
return true;
}
else
{
return false;
}
}
//检查并根据系统版本选择打开程序方式
void MyShellExecuteEx(LPCTSTR lpFile, LPCTSTR lpParameters)
{
if (IsOsVersionVistaOrGreater())
{
SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFOW), 0 };
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.nShow = SW_SHOWNORMAL;
sei.lpFile = lpFile;
sei.lpParameters = lpParameters;
sei.lpVerb = _T("runas");
ShellExecuteEx(&sei);
}
else
{
ShellExecute(NULL, _T("open"), lpFile, lpParameters, NULL, SW_SHOWNORMAL);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
MyShellExecuteEx(_T(".\\Setup.exe"), _T("/S"));
return 0;
}
相关文章推荐
- 程序调用ShellExecuteEx打开其他程序(兼容UAC获取管理员权限)
- 程序调用ShellExecuteEx打开其他程序(兼容UAC获取管理员权限)
- golang windows程序获取管理员权限(UAC )
- 利用ShellExecuteEx手动提升用户特权,以管理员权限来运行程序。win7会有UAC弹窗
- golang windows程序获取管理员权限(UAC ) via gocn
- golang windows程序获取管理员权限(UAC )
- VS 编译Win32程序默认获取管理员权限
- vs2008中向项目(以C#为例)添加要求管理员权限的属性(为了兼容vista的UAC)
- MFC管理员权限(UAC下的程序权限提升)
- Winform 获取Win7 UAC 管理员权限
- 【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限
- Perl: 获取新包、发邮件、调用其他程序 (转)
- C#的dll被其他程序调用时,获取此dll正确的物理路径
- android私有存储目录下的文件如何让其他程序有权限打开
- 弹出UAC窗体,以管理员权限运行程序
- 微信小程序 兼容用户拒绝获取位置权限 用户拒绝权限处理
- 在Visual Studio中构建启动时申请管理员权限的程序(UAC支持)
- iphone程序启动互相调用, 打开其他程序
- windows7 uac初探三(最终编程篇-集成vc,vb和c#获取win7管理员权限)
- vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限