最近因為工作上的需要開始接觸 Delphi,這個跟 BCB 很像,但是使用 Pascal 為語言的 IDE,不過這不是重點。
重點是,相較於 XP 在 Vista 和 7 底下多了一個新的系統安全機制 UAC ( User Account Control )。
雖然他的立足點是為了系統的安全性的考量,但是這對於程式設計上卻也是個困擾 :(
假設,你寫了一隻程式,做了一些只有 Administrator 權限才能進行的動作,例如: 修改 Registry、安裝 Driver;
在沒有點右鍵,點選 "Run as Administrator" 的情況下,你的程式可能就莫名其妙的 FAIL 了
而這個原因就在於 UAC 這個機制,他封鎖了所有一般 User 權限外所能進行的動作
那就點右鍵就好啦! 但是如果不能點右鍵呢? 總不能要求使用者每次都去點右鍵選 "Run as Administrator" 吧
很不巧...我要寫的程式連點右鍵的機會都沒有,所以要想辦法讓 UAC 自動提示 User 切換到 Administrator 的權限做事
在網路上找到了下面這個方法 - 嵌入 Manifest
1. 建立 Manifest - Autorun.exe.manifest
基本上照著附圖打就行了,但是記得把 name="Autorun" 中的 Autorun 換成你程式的名字
重點是,相較於 XP 在 Vista 和 7 底下多了一個新的系統安全機制 UAC ( User Account Control )。
雖然他的立足點是為了系統的安全性的考量,但是這對於程式設計上卻也是個困擾 :(
假設,你寫了一隻程式,做了一些只有 Administrator 權限才能進行的動作,例如: 修改 Registry、安裝 Driver;
在沒有點右鍵,點選 "Run as Administrator" 的情況下,你的程式可能就莫名其妙的 FAIL 了
而這個原因就在於 UAC 這個機制,他封鎖了所有一般 User 權限外所能進行的動作
那就點右鍵就好啦! 但是如果不能點右鍵呢? 總不能要求使用者每次都去點右鍵選 "Run as Administrator" 吧
很不巧...我要寫的程式連點右鍵的機會都沒有,所以要想辦法讓 UAC 自動提示 User 切換到 Administrator 的權限做事
在網路上找到了下面這個方法 - 嵌入 Manifest
1. 建立 Manifest - Autorun.exe.manifest
基本上照著附圖打就行了,但是記得把 name="Autorun" 中的 Autorun 換成你程式的名字
2. 建立 RC 檔 - Autorun.exe.rc
內容照抄下面的,檔名換成你剛剛建的 manifest
1 24 Autorun.exe.manifest
#ps 1 資源編號
24 資源類型為RTMAINIFEST
3. Compile RES
在 command line 下進行 compile,指令如下:
brcc32 Autorun.exe.rc -foAutorun.res
4. Include RES file
在你的 pas 檔中把 RES 檔 include 進來
{$R Autorun.res}
5. Rebuild Program
最後重新 build 一下你的程式
如果你的程式在 Vista 跟 7 中有出現一個盾牌的符號,這樣就算大功告成了。
沒有留言:
張貼留言