让Delphi XE2程序支持UAC

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让Delphi XE2程序支持UAC相关的知识,希望对你有一定的参考价值。

在win7下,开发的程序有的时候莫名其妙就不能正常工作了,其实都是因为权限不够,要想能够正常运行,就需要获得管理员权限,这就需要处理UAC。具体方法如下:

一,制作“uac.manifest”文件。新建一个名为“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" 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>  

二,设置XE2工程属性。Project->Options->Application->Runtime Themes->Use custom manifest,随后选择"uac.manifest"文件,点”OK“按钮,随后编译程序,这样我们的程序就在运行时候会提示用户提升权限,在运行时的对话框中选择”是“,我们的程序就拥有了管理员权限,有足够权限做我们想做的事情了。

 

 UAC很有意思的地方:

1,如果一个拥有UAC权限的程序运行后,这个程序再执行需要UAC权限的程序,也不会再出现UAC提示了。

2,如果一个拥有UAC权限的程序运行后,把一个需要UAC权限的程序注册成NT Service程序,这个NT Service程序运行不在出现UAC提示。

参考:

http://hi.baidu.com/mestars/item/bef02c1653b3426e70d5e861

以上是关于让Delphi XE2程序支持UAC的主要内容,如果未能解决你的问题,请参考以下文章

delphi xe2实现.net中的wcf并支持回调

如何让 FastCodePatch 在 Delphi XE2 Win64 平台上工作?

Delphi TADOStoredProc / D6 和 RAD Studio XE2 最近的故障

Delphi - 需要 XE2 代码到 Delphi7。使用wininet下载文件

如何从 Delphi XE2 加速文字自动化

使用 Delphi XE2 的 AnimateWindow