在vs里设置UAC执行级别是很容易的,但是CodeBlocks并不原生支持UAC的设置。实际上,Windows是通过在程序中嵌入带UAC选项的manifest清单文件来实现程序的UAC支持的。所以,我们可以设法在CodeBlocks的C/C++项目中添加清单文件,让生成的程序带有安全盾,双击运行时自动请求管理员权限,如下所示:
具体的嵌入方法很简单,把下面两段内容分别保存为resource.rc和manifest.xml:
#include <windows.h>
1 RT_MANIFEST ".\\manifest.xml"
<?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"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
然后以管理员权限打开CodeBlocks,在任意的C/C++项目中添加上面两个文件(最好先把这两个文件移至项目目录下):
接下来,就可以编译运行项目了,会看到生成的程序已经带有安全盾,双击运行时会弹出管理员权限确认对话框。