zoukankan      html  css  js  c++  java
  • 易语言等软件自动获取管理员权限,在64位Windows7系统非管理员帐户中执行

    昨天有易语言开发者向我求助,说他用易语言编译的32位程序软件,发布给64位操作系统Win 7用户使用,因为该用户确定没有管理员权限,而程序启动时又要求必须输入管理员密码,如此陷入困境。 目标企业用户管理严格,要求为普通用户分配管理员权限是不切实际的,只能开发人员从软件开发的角度在技术上解决。

    我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决。于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去,试一试能不能解决问题:

     

    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="asInvoker" uiAccess="false" />  
    7.             </requestedPrivileges>  
    8.         </security>  
    9.     </trustInfo>  
    10. </assembly>  

     

     

    结果测试之后他发现,非常成功的解决了问题。修改后的软件发布给用户测试,启动时也不再提示输入管理员密码了,功能一切正常。

     

    下面对比一下易语言编译时默认加入的 manifest 资源:

     

    1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
    2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
    3.     <assemblyIdentity  
    4.         version="1.0.0.0"  
    5.         processorArchitecture="X86"  
    6.         name="......"  
    7.         type="win32"  
    8.     />  
    9.     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">  
    10.         <security>  
    11.             <requestedPrivileges>  
    12.                 <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>  
    13.             </requestedPrivileges>  
    14.         </security>  
    15.     </trustInfo>  
    16. </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

  • 相关阅读:
    扩展Dijkstra
    CodeForces 1396E. Distance Matching
    大联盟2
    整式乘除法
    美国数学会众多教授推荐的本科&研究生代数几何经典书籍教材清单
    算法题——立方体的体对角线穿过多少个正方体?
    导数练习题
    导数压轴题
    集合
    著名数学家Ky Fan的故事
  • 原文地址:https://www.cnblogs.com/cron/p/4925233.html
Copyright © 2011-2022 走看看