在某些时候,我们的程序需要执行一些系统的操作,需要使用管理员权限才能完成,所以,我们必须让用户使用管理员权限来执行我们的程序。本文主要介绍,,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限。
以下使用VS2008+WTL8.0+Vista举例 .
1. 使用VS2008建立WTL工程,在新建工程向导中选择“
Add Common Controls Manifest” 。
2. 编译工程,在输出目录生成 *.exe.embed.manifest 文件,使用记事本打开,将level="asInvoker" 改成 level="requireAdministrator" .
3. 新建 Custom 资源,Resource types输入24 .
4. 将*.exe.embed.manifest 文件的内容Copy到Custom 资源里 .
5. 在resource.h 中将Custom 资源ID改成1 。
6. 编译,这时,生成的EXE文件图标上多了一个盾牌标志。
7. 修改之后的Mainfest文件内容大概如下:
<?
xml
version
="1.0"
encoding
="UTF-8"
standalone
="yes"
?>
< assembly xmlns ="urn:schemas-microsoft-com:asm.v1" manifestVersion ="1.0" >
< trustInfo xmlns ="urn:schemas-microsoft-com:asm.v3" >
< security >
< requestedPrivileges >
< requestedExecutionLevel level ="requireAdministrator" uiAccess ="false" >
</ requestedExecutionLevel >
</ requestedPrivileges >
</ security >
</ trustInfo >
< dependency >
< dependentAssembly >
< assemblyIdentity type ="win32"
name ="Microsoft.Windows.Common-Controls"
version ="6.0.0.0"
processorArchitecture ="x86"
publicKeyToken ="6595b64144ccf1df"
language ="*" >
</ assemblyIdentity >
</ dependentAssembly >
</ dependency >
</ assembly >
< assembly xmlns ="urn:schemas-microsoft-com:asm.v1" manifestVersion ="1.0" >
< trustInfo xmlns ="urn:schemas-microsoft-com:asm.v3" >
< security >
< requestedPrivileges >
< requestedExecutionLevel level ="requireAdministrator" uiAccess ="false" >
</ requestedExecutionLevel >
</ requestedPrivileges >
</ security >
</ trustInfo >
< dependency >
< dependentAssembly >
< assemblyIdentity type ="win32"
name ="Microsoft.Windows.Common-Controls"
version ="6.0.0.0"
processorArchitecture ="x86"
publicKeyToken ="6595b64144ccf1df"
language ="*" >
</ assemblyIdentity >
</ dependentAssembly >
</ dependency >
</ assembly >
转载于:https://blog.51cto.com/wangzai9931/164091