用manifest资源为程序增加UAC

Manifest文件主要用于解决DLL Hell问题,并在Vista及更高版本的Windows中用于处理UAC。在Visual Studio 2008和2012中,可以通过链接器设置轻松添加UAC功能。对于Visual Studio 2005,需要手动创建manifest文件并将其嵌入到exe资源中。文件内容包括请求管理员权限的设置。可以通过在资源文件中增加RT_MANIFEST类型资源或者在清单工具设置中指定manifest文件来实现。

    Manifest文件是为了解决“DLL Hell”问题而引入的。Vista引入了UAC机制,也是通过manifest文件让操作系统感知到exe文件的UAC状态的(在程序图标右下方有一个盾牌标识)。Manifest文件介绍请参考这篇文章,http://hi.baidu.com/emtlwemlducgixe/item/5912603a495fd120b3c0c50d。本文只介绍如何利用Manifest文件为应用程序添加UAC功能。

    Visual Studio 2008和Visual Studio 2012添加UAC功能相对简单,只需要在配置属性的链接器\清单文件项里设置以下项目即可。


    编译后会在exe资源里嵌入如下内容的manifest文件。



   Visual Studio 2005没有提供类似的编译选项,必须通过另外的办法将manifest文件嵌入exe资源。

    首先准备好manifest文件,命名为 程序名.exe.manifest,如app.exe.manifest,文件内容如下:

<?xml version='1.0' encoding='UTF-8'standalone='yes'?>

<assemblyxmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>

 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

   <security>

     <requestedPrivileges>

       <requestedExecutionLevel level='requireAdministrator'uiAccess='false' />

     </requestedPrivileges>

   </security>

 </trustInfo>

</assembly>

    ①    若编译只兼容vista系统的程序,在资源文件里增加一个RT_MANIFEST类型的资源,资源id必须为1。将资源文件链接进exe即可。

#define MANIFEST_RESOURCE_ID 1

MANIFEST_RESOURCE_ID RT_MANIFEST "app.exe.manifest"

 

    ②    若编译xp和vista操作系统的程序,在配置属性\清单工具\输入输出\附加清单文件项中指定待添加的清单文件,重新编译即可。

 

Ps:只需要为exe增加manifest资源。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值