让VC程序在Win7下获得管理员权限
2011-08-22 22:43
218 查看
VC编译出来的应用程序在win7或vista下运行,有可能因为权限问题,不能成功运行。
用下面的办法,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限。
1.打开应用程序的源代码工程
2.添加一个“custom”资源,"resource type"填24,把资源ID改为1,然后把以下内容复制到资源内容中保存
3.重新编译应用程序,此时会发现,广用程序的图标在Win7下会多出一个小盾标志。
这时双击的运行的时候,就会跳出框提示,获取管理员运行。
--------------------------------------------------------------------------------------------------
上面的资源文件里有一个配置选项叫requestedExecutionLevel, 这个项用于配置当前应用请求的执行权限级别。这个项有3个值可供选择,如下所示:
asInvoker : 如果选这个,应用程序就是以当前的权限运行。
highestAvailable: 这个是以当前用户可以获得的最高权限运行。
requireAdministrator: 这个是仅以系统管理员权限运行。
默认情况下是 asInvoker。highestAvailable 和 requireAdministrator 这两个选项都可以提示用户获取系统管理员权限。那么这两个选项的区别在哪里呢?他们的区别在于,如果我们不是以管理员帐号登录,那么如果应用程序设置为 requireAdministrator ,那么应用程序就直接运行失败,无法启动。而如果设置为 highestAvailable,则应用程序可以运行成功,但是是以当前帐号的权限运行而不是系统管理员权限运行。如果我们希望程序在非管理员帐号登录时也可以运行(这种情况下应该某些功能受限制)
,那么建议采用 highestAvailable 来配置。
关于requestedExecutionLevel 设置的权威文档请参考下面链接:
Create and Embed an Application Manifest (UAC)
用下面的办法,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限。
1.打开应用程序的源代码工程
2.添加一个“custom”资源,"resource type"填24,把资源ID改为1,然后把以下内容复制到资源内容中保存
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="mulitray.exe.manifest" type="win32" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
3.重新编译应用程序,此时会发现,广用程序的图标在Win7下会多出一个小盾标志。
这时双击的运行的时候,就会跳出框提示,获取管理员运行。
--------------------------------------------------------------------------------------------------
上面的资源文件里有一个配置选项叫requestedExecutionLevel, 这个项用于配置当前应用请求的执行权限级别。这个项有3个值可供选择,如下所示:
asInvoker : 如果选这个,应用程序就是以当前的权限运行。
highestAvailable: 这个是以当前用户可以获得的最高权限运行。
requireAdministrator: 这个是仅以系统管理员权限运行。
默认情况下是 asInvoker。highestAvailable 和 requireAdministrator 这两个选项都可以提示用户获取系统管理员权限。那么这两个选项的区别在哪里呢?他们的区别在于,如果我们不是以管理员帐号登录,那么如果应用程序设置为 requireAdministrator ,那么应用程序就直接运行失败,无法启动。而如果设置为 highestAvailable,则应用程序可以运行成功,但是是以当前帐号的权限运行而不是系统管理员权限运行。如果我们希望程序在非管理员帐号登录时也可以运行(这种情况下应该某些功能受限制)
,那么建议采用 highestAvailable 来配置。
关于requestedExecutionLevel 设置的权威文档请参考下面链接:
Create and Embed an Application Manifest (UAC)
相关文章推荐
- VC编写vista或win7下需要管理员权限运行的程序
- VC 编写 Vista 或 win7 下需要管理员权限运行的程序
- 如何让程序在win7下获得管理员权限
- VC2005 编译Win7以管理员权限启动的可执行程序
- vs2008 程序获得WIN7管理员权限
- VC,在win7下让程序获取管理员权限
- VC编写vista或win7下需要管理员权限运行的程序
- VC编写vista或win7下需要管理员权限运行的程序
- vs2005让程序在win7下获得管理员权限
- VC编写vista或win7下需要管理员权限运行的程序
- delphi7 编译的程序在win7下请求获得管理员权限的方法
- vs2005 中引入app.manifest(c#程序在win7下以管理员权限运行方法)
- vc程序以管理员权限运行方法
- Win7下要求以管理员权限运行程序
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限
- 编写C#程序让其在Win7 下以管理员权限运行
- 如何在VC中通过添加资源文件,使程序在Vista上用管理员权限运行
- vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限
- Win7下要求以管理员权限运行程序
- VC++ MFC程序设置以管理员权限运行