如何讓你的C#程式在Vista上以「系統管理者身分」執行
2008-12-04 |
雖然使用者已經是用Administrator或Administrators群組登入並執行你開發的程式,但其實Vista還是會用一般使用者來執行這個程式,除非使用者在程式檔案上按右鍵/以系統管理者身分執行。
但如果你開發出來的程式卻要使用者在每次執行的時候都要如此麻煩,會造成使用者的不便。
因此你可以這麼做:
1. 將這段XML修改後,存成「你的程式檔名.exe.manifest」
-
<?xml version="1.0" encoding="utf-8" ?>
-
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-
<assemblyIdentity version="1.0.0.0"
-
processorArchitecture="X86"
-
name="someExecName"
-
type="win32" />
-
<description>Your Program Description</description>
-
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security>
-
<requestedPrivileges>
-
<requestedExecutionLevel level="requireAdministrator" />
-
</requestedPrivileges>
-
</security>
-
</trustInfo></assembly>
2. 執行
mt -manifest YourProgram.exe.manifest -outputresource:YourProgram.exe
也可以將上面這個指令放在專案的「建置後事件命令列」中,當你的程式compile後,就會自動來執行這段指令。
接著,Vista使用者在執行你的程式後,就會自動跳出這個畫面,代表成功了!
新手~ 說:
Blave您好 : 有個問題想請教你我這邊有將方案加上了一個新的安裝和部屬的專案,安裝和部屬的檔案來源就是已經修改過權限的執行檔,但是經由安裝和部屬製作出來的msi檔,安裝後會發現執行檔的權限被修改過,不是我修改後的檔,而是修改之前的樣子,請問這問題該怎們解呢?
多謝解答!!
回應
Blave 回應:
四月 12th, 2010 at 09:05:33
通常經過部署後的檔案,權限應該都會改變的。
若您真的必須在安裝之後,做一些動作,可以先寫一支console的程式(.exe),把它包含到安裝專案裡,在「完裝後動作」裡,去呼叫這個.exe,也就是安裝完畢後,會去執行你的.exe檔,這樣應該就能解決您的問題了。
回應
初心者 說:
Blave您好,
我目前寫的程式也遇到與此篇文章相同的問題,
但我依文中的步驟執行後,卻發生了建置失敗的問題,
錯誤訊息為:
"mt -manifest YourProgram.exe.manifest -outputresource:YourProgram.exe"命令以返回碼9009結束,
YourProgram.exe已更換為我自己的檔名.exe,
請問有方法解決嗎?在網路上找了好一段時間但還是找不到方法。
還望Blave大指點迷津,謝謝。
(對不起,回舊文)
回應
Blave Huang 回應:
八月 18th, 2009 at 15:28:08
我自己沒遇過這個問題耶!不過我在猜,有可能是路徑有錯誤。您可以試試把mt.exe的目錄加到PATH變數,或是直接把mt.exe的目錄名稱加到建置後事件裡
回應