让Delphi XE2程序支持UAC

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

一,制作“uac.manifest”文件。新建一个名为“uac.manifest”的文件,在里面加入如下内容:

 

[plain] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
  3. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">  
  4. <security>  
  5. <requestedPrivileges>  
  6. <requestedExecutionLevel level="requireAdministrator" uiAccess="false">  
  7. </requestedExecutionLevel>  
  8. </requestedPrivileges>  
  9. </security>  
  10. </trustInfo>  
  11. <dependency>  
  12. <dependentAssembly>  
  13. <assemblyIdentity type="win32"  
  14. name="Microsoft.Windows.Common-Controls"  
  15. version="6.0.0.0"  
  16. processorArchitecture="x86"  
  17. publicKeyToken="6595b64144ccf1df"  
  18. language="*">  
  19. </assemblyIdentity>  
  20. </dependentAssembly>  
  21. </dependency>  
  22. </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

http://blog.csdn.net/sunylat/article/details/9093379

posted @   findumars  Views(616)  Comments(0Edit  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2012-03-02 使用CRichEditCtrl与正则实现XML高亮编辑器
2012-03-02 两种方法查看MFC源代码
2012-03-02 LLVM CodeExtractor
点击右上角即可分享
微信分享提示