让易语言编译的32位程序在64位Windows7系统非管理员帐户中执行
2013-11-26 12:04
465 查看
昨天有易语言开发者向我求助,说他用易语言编译的32位程序软件,发布给64位操作系统Win 7用户使用,因为该用户确定没有管理员权限,而程序启动时又要求必须输入管理员密码,如此陷入困境。 目标企业用户管理严格,要求为普通用户分配管理员权限是不切实际的,只能开发人员从软件开发的角度在技术上解决。
我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决。于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去,试一试能不能解决问题:
结果测试之后他发现,非常成功的解决了问题。修改后的软件发布给用户测试,启动时也不再提示输入管理员密码了,功能一切正常。
下面对比一下易语言编译时默认加入的 manifest 资源:
会发现两者有细微的区别:asInvoker 和 requireAdministrator 的区别。后者会要求软件启动时必须有管理员权限,否则拒绝工作。那能不能一刀切的要求易语言默认采用 asInvoker 呢?恐怕还是不行的,因为修改Windows注册表之类的行为还是必须得有管理员权限的(否则修改无效)。或许在某些条件下可以做一些智能判断?
附 ResHacker (Resource Hacker) 3.6 下载地址:
http://www.angusj.com/resourcehacker/ http://www.crsky.com/soft/1747.html http://dl.pconline.com.cn/html_2/1/59/id=842&pn=0.html
我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决。于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去,试一试能不能解决问题:
<?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="asInvoker" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </assembly>
结果测试之后他发现,非常成功的解决了问题。修改后的软件发布给用户测试,启动时也不再提示输入管理员密码了,功能一切正常。
下面对比一下易语言编译时默认加入的 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 下载地址:
http://www.angusj.com/resourcehacker/ http://www.crsky.com/soft/1747.html http://dl.pconline.com.cn/html_2/1/59/id=842&pn=0.html
相关文章推荐
- 实现让易语言编译的32位程序在64位Windows7系统非管理员帐户中执行
- 易语言等软件自动获取管理员权限,在64位Windows7系统非管理员帐户中执行
- 关于Mq c++程序32位编译 和Mq命令必须加载64位动态库执行 矛盾的解决
- 嵌入式 GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- Ubuntu64位编译32位程序
- windows 32位程序编译成64位
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- 64位ubuntu编译32位程序
- 编译64位和编译32位程序
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- 64位windows上用mingw编译32位程序的一种方法
- 32位XP下visual Studio 2010编译64位程序
- linux(ubuntu)下的64位编译器编译32位程序
- 如何让32位编译的程序在64位系统中正常运行
- 如何在ubuntu14.04(64位)编译运行32位程序
- SUSE 64位编译32位程序出错
- 在32位系统下编译64位程序
- 汇编———64位电脑编译链接32位汇编程序错误与解决方法
- 在64位linux下编译32位程序
- 64位程序编译:终于将City****由32位编译为64位了