[.NET] VS2005 讓應用程式以系統管理員的身分執行

[.NET] : VS2005 讓應用程式以系統管理員的身分執行


前言 :

應用程式在Vista或是Win7上執行時,有時會有權限不足的問題。
簡單的解法是請使用者在應用程式圖示上按右鍵,然後選擇以系統管理員身分執行。
但這個動作常常會被使用者忘記。


這個問題在VS2008或是VS2010上已經有了解決方案 :
(請參考)
http://social.msdn.microsoft.com/Forums/zh-TW/1007/thread/ce70e22d-45f7-4903-b8f4-76a159d3002d
http://www.dotblogs.com.tw/jjnnykimo/archive/2009/05/08/8346.aspx
http://www.dotblogs.com.tw/dotnetfactory/archive/2008/12/01/6152.aspx


這篇文章是描述在VS2005的開發環境上,如何實作上述的解決方案。


實作 :

1. 建立Windows應用程式專案
image


2. 加入文字檔並取名為App.manifest
image
image


3. 將下列內容寫入App.manifest

<asmv1:assembly manifestversion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyidentity name="MyApplication.app" version="1.0.0.0"></assemblyidentity>
  <trustinfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedprivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedexecutionlevel level="requireAdministrator" uiaccess="false"></requestedexecutionlevel>
      </requestedprivileges>
    </security>
  </trustinfo>
</asmv1:assembly>

image


4. 開啟專案屬性視窗的建置事件頁面
image


5. 將下列內容寫入建置後事件命令列
"$(DevEnvDir)..\..\SDK\v2.0\Bin\mt.exe" -manifest "$(ProjectDir)App.manifest" -outputresource:"$(TargetDir)$(TargetName).exe;#1"
image


6. 存檔後編譯
image


7. 執行後會顯示使用者帳戶控制視窗
image

期許自己
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。