以前一直在 WIN XP /2003 下编程,现在有客户使用 VISTA 系统,运行程序的时候报错。我的程序用到了注册表,还是对 HKLM 进行读写,VISTA 的安全机制肯定是不让了,别人的软件在遇到这个问题的时候都有一个 WINDOWS 的安全提示,询问是否以管理员身份运行,我的程序就什么提示都没有,直接报错。后来在网上查到了解决办法,让我的程序也支持 VISTA 了。
操作步骤:
1.建立 res 文件
建立一个文本文件,名字可以自己起,我这里叫:UAC.manifest,内容:
<?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>
建立文本文件,名为 UAC.rc,内容:
1 24 UAC.manifest
编译成 uac.res 文件,运行:
brcc32 uac.rc -fouac.res
2.在代码中引入
打开项目文件,加入
{$R uac.res}
3.编译程序
这时程序就支持 VISTA 了,在运行的时候,会弹出 WINDOWS 的提示框,询问用户是否允许以管理员身份运行。