c#經過app.manifest使程序以管理員身份運行

 

一般咱們使用c#編寫的程序不會彈出這個提示,也就沒法以管理員身分運行。微軟的操做系統使用微軟的產品方法固然是有的,經過app.manifest配置能夠使程序打開的時候,彈出UAC提示須要獲得容許才能夠繼續,這樣就得到了管理員的權限來執行程序
 

微軟在Windows Vista開始引入了UAC(用戶賬戶控制)新技術(點擊這兒瞭解什麼是UAC)。當程序執行時須要權限的話,UAC會彈出警告消息:讓用戶確認是否贊成容許這個程序改變你的計算機配置,windows須要獲得你的許可纔可讓程序繼續執行下去。

一般咱們使用c#編寫的程序不會彈出這個提示,也就沒法以管理員身分運行。微軟的操做系統使用微軟的產品方法固然是有的,經過app.manifest配置能夠使程序打開的時候,彈出UAC提示須要獲得容許才能夠繼續,這樣就得到了管理員的權限來執行程序。

方法以下:

打開vs200五、vs2008等工程,在【解決方案資源管理器】裏查看是否有app.manifest這個文件,若是沒有的話,經過如下方法建立:

方法1:

一、在【解決方案資源管理器】右鍵工程名稱選擇屬性;
二、在彈出的該對話框中,選擇【安全性】選項卡。
三、勾選【啓用ClickOnce安全設置】,並選中【這是徹底可信的應用程序】。
四、保存工程,這時候app.manifest就自動建立了。html

VS2008 工程屬性安全性

 

 

c# app.manifest


打開app.manifest把默認的配置修改一下,經過代碼的註釋,能夠知道須要修改的節點是【requestedExecutionLevel】c#


app.manifest 設置

 

 


asInvoker : 若是選這個,應用程序就是以當前的權限運行。

highestAvailable: 這個是以當前用戶能夠得到的最高權限運行。

requireAdministrator: 這個是僅以系統管理員權限運行。

找到<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
把其改成<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

這時候修改完成,按下F5進行調試,一般會收到以下的錯誤提示:【ClickOnce 不支持請求執行級別「requireAdministrator」】。

事情好像發生了相互矛盾,上面開啓【ClickOnce】便自動建立了app.manifest,如今修改了app.manifest卻提示:ClickOnce 不支持請求執行級別「requireAdministrator」。

解決方法是:只要把【啓用ClickOnce安全設置】不勾選就能夠了。

若是操做步驟正確,按下F5進行調試,會彈出以下的提示框,VS具備提高的權限。
 windows

vs2008 具備提高的權限

 

 


這樣咱們編寫的應用程序在運行後,就會首先彈出這樣一個提示框 , 點【Yes】後,程序才能夠繼續運行,而且得到系統管理員的權限。

方法2:

爲工程項目添加一個類,應用程序清單文件(app.manifest)。安全


c# 添加應用程序清單文件

 

 


而後能夠看到app.manifest的位置不在Properties屬性裏了,變成在引用裏了,其節點內容也少了一些。app

c# 引用 app.manifest


剩下的方法和上面相同。這樣跳過了【啓用ClickOnce安全設置】這步,直接執行,不會出錯了。ui

相關文章
相關標籤/搜索