易語言等軟件自動獲取管理員權限,在64位Windows7系統非管理員帳戶中執行


昨天有易語言開發者向我求助,說他用易語言編譯的32位程序軟件,發布給64位操作系統Win 7用戶使用,因為該用戶確定沒有管理員權限,而程序啟動時又要求必須輸入管理員密碼,如此陷入困境。 目標企業用戶管理嚴格,要求為普通用戶分配管理員權限是不切實際的,只能開發人員從軟件開發的角度在技術上解決。

我聽到這個問題后,第一感覺是微軟用戶帳戶控制(UAC)引發的,估計通過給 exe 添加特定的 manifest 資源應該可以解決。於是我給了他一段代碼,讓他用 ResHacker 之類的軟件添加到軟件里面去,試一試能不能解決問題:

 

[html]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  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 資源:

 

[html]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM