时间:2021-05-19
昨天有易语言开发者向我求助,说他用易语言编译的32位程序软件,发布给64位操作系统Win 7用户使用,因为该用户确定没有管理员权限,而程序启动时又要求必须输入管理员密码,如此陷入困境。 目标企业用户管理严格,要求为普通用户分配管理员权限是不切实际的,只能开发人员从软件开发的角度在技术上解决。
我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决。于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去,试一试能不能解决问题:
结果测试之后他发现,非常成功的解决了问题。修改后的软件发布给用户测试,启动时也不再提示输入管理员密码了,功能一切正常。
下面对比一下易语言编译时默认加入的 manifest 资源:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="......" type="win32" /> <trustInfo xmlns="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 下载地址:
https:///softs/2289.html
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
很多人用Windows7的64位版本的时候会发现,以前在32位Windows7系统能玩的游戏,在64位不能玩了,主要是因为很多人玩的游戏是针对32位系统的,
在论坛看到很多网友提问说32位系统下无法安装64位Windows7系统,这里推荐一个很简单的方法来在32位系统下安装64位系统。 32位系统可以是任意,比
目标:在64位linux系统上编译出32位程序。操作:1.执行goenv查看当前go环境配置2.执行exportGOARCH=386配置go输出系统平台为32位
问:Windows7系统怎样把WMP默认为64位?答:Windows自带版本WindowsMediaPlayer默认为32位。如果是64位的用户,按WIN输入C
Windows8能够在支持Windows7的相同硬件上平稳运行: ·1GBRAM(32位)或2GBRAM(64位) ·16GB(32位)或20GB(64