由于Vista以後win中加入的UAC安全機制,采用Delphi開發的程式如果不右鍵點選“以管理者身份運作”,則會報錯。 在XE2以上的Delphi版本處理這個問題已經非常簡單了。 右建點選工程,選擇“Options”->“Applicaion”下,将Runtime themes項設定為“Use Custom manifest”,點選下方按鈕,選擇相應的Manifest檔案即可。 需要注意的是:Debug和Release模式不同,要進行同樣設定 至于Manifest檔案,也就是一個XML文檔,原文如下:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
XE2以前的版本解決辦法,将上面的xml内容儲存為UAC.manifest 然後編輯一個RC檔案,名稱為uac.rc 如下所示:
1 24 UAC.manifest
其中:
1-代表資源編号
24-資源類型為RTMAINIFEST
UAC.manifest-前面的檔案名稱
用brcc32編譯這個rc檔案為res檔案,如下所示:
brcc32.exe UAC.Rc
在程式dpr檔案裡面加入
{$R UAC.RES}
讓Delphi編譯的時候,把uac.res編譯進exe檔案
把檔案放到vista或win7或WIN10下運作,就會看程式圖示下面顯示UAC盾牌标志了。以後再打開程式之前一些需要以右鍵管理者運作才能正常工作的都可以正常了。比如C槽的寫入權限
注:XE2及以上的開發環境中用上述資源檔案引入的方式經測試是無效的。必須要用如下圖的自定義Manifest方法才能起作用,負作用:僅用上面的manifest檔案内容會帶來程式xp風格皮膚丢失