昨天有易语言开发者向我求助,说他用易语言编译的32位程序软件,发布给64位操作系统Win 7用户使用,因为该用户确定没有管理员权限,而程序启动时又要求必须输入管理员密码,如此陷入困境。 目标企业用户管理严格,要求为普通用户分配管理员权限是不切实际的,只能开发人员从软件开发的角度在技术上解决。
我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决。于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去,试一试能不能解决问题:
<? version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<assembly ns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">
<trustInfo ns=\"urn:schemas-microsoft-com:asm.v3\">
<security>
<requestedPrivileges>
<requestedExecutionLevel level=\"asInvoker\" uiAccess=\"false\" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
结果测试之后他发现,非常成功的解决了问题。修改后的软件发布给用户测试,启动时也不再提示输入管理员密码了,功能一切正常。
下面对比一下易语言编译时默认加入的 manifest 资源:
<? version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <assembly ns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\"> <assemblyIdentity version=\"1.0.0.0\" processorArchitecture=\"X86\" name=\"......\" type=\"win32\" /> <trustInfo ns=\"urn:schemas-microsoft-com:asm.v3\"> <security> <requestedPrivileges> <requestedExecutionLevel level=\"requireAdministrator\" uiAccess=\"false\"/> </requestedPrivileges> </security> </trustInfo> </assembly>
会发现两者有细微的区别:asInvoker 和 requireAdministrator 的区别。后者会要求软件启动时必须有管理员权限,否则拒绝工作。那能不能一刀切的要求易语言默认采用 asInvoker 呢?恐怕还是不行的,因为修改Windows注册表之类的行为还是必须得有管理员权限的(否则修改无效)。或许在某些条件下可以做一些智能判断?
附 ResHacker (Resource Hacker) 3.6 下载地址:
继续阅读与本文标签相同的文章
下一篇 :
机器人即将取代工厂工人
-
特斯拉Model Y“将于2020年第一季度”开始生产
2026-05-18栏目: 教程
-
重科技、重创新、重人才 常德高新区连续两年举办高新技术交流会
2026-05-18栏目: 教程
-
iRobot擦地机器人上新,更有意义的是机器人间互动的实现
2026-05-18栏目: 教程
-
科技的不断进步,分享缤越智能领航系统的使用方法
2026-05-18栏目: 教程
-
谷歌发布首款装有雷达的智能手机
2026-05-18栏目: 教程
