c#通過(guò)app.manifest使程序以管理員身份運(yùn)行
微軟在Windows Vista開始引入了UAC(用戶帳戶控制)新技術(shù)(點(diǎn)擊這兒了解什么是UAC)。當(dāng)程序執(zhí)行時(shí)需要權(quán)限的話,UAC會(huì)彈出警告消息:讓用戶確認(rèn)是否同意允許這個(gè)程序改變你的計(jì)算機(jī)配置,windows需要得到你的許可才可以讓程序繼續(xù)執(zhí)行下去。
通常我們使用c#編寫的程序不會(huì)彈出這個(gè)提示,也就無(wú)法以管理員身分運(yùn)行。微軟的操作系統(tǒng)使用微軟的產(chǎn)品方法當(dāng)然是有的,通過(guò)app.manifest配置可以使程序打開的時(shí)候,彈出UAC提示需要得到允許才可以繼續(xù),這樣就獲得了管理員的權(quán)限來(lái)執(zhí)行程序。
方法如下:
打開vs2005、vs2008等工程,在【解決方案資源管理器】里查看是否有app.manifest這個(gè)文件,如果沒有的話,通過(guò)以下方法創(chuàng)建:
方法1:
1、在【解決方案資源管理器】右鍵工程名稱選擇屬性;
2、在彈出的該對(duì)話框中,選擇【安全性】選項(xiàng)卡。
3、勾選【啟用ClickOnce安全設(shè)置】,并選中【這是完全可信的應(yīng)用程序】。
4、保存工程,這時(shí)候app.manifest就自動(dòng)創(chuàng)建了。
打開app.manifest把默認(rèn)的配置修改一下,通過(guò)代碼的注釋,可以知道需要修改的節(jié)點(diǎn)是【requestedExecutionLevel】
asInvoker : 如果選這個(gè),應(yīng)用程序就是以當(dāng)前的權(quán)限運(yùn)行。
highestAvailable: 這個(gè)是以當(dāng)前用戶可以獲得的最高權(quán)限運(yùn)行。
requireAdministrator: 這個(gè)是僅以系統(tǒng)管理員權(quán)限運(yùn)行。
找到<requestedExecutionLevel level="asInvoker" uiAccess="false" />
把其改為<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
這時(shí)候修改完成,按下F5進(jìn)行調(diào)試,通常會(huì)收到如下的錯(cuò)誤提示:【ClickOnce 不支持請(qǐng)求執(zhí)行級(jí)別“requireAdministrator”】。
事情好像發(fā)生了相互矛盾,上面開啟【ClickOnce】便自動(dòng)創(chuàng)建了app.manifest,現(xiàn)在修改了app.manifest卻提示:ClickOnce 不支持請(qǐng)求執(zhí)行級(jí)別“requireAdministrator”。
解決方法是:只要把【啟用ClickOnce安全設(shè)置】不勾選就可以了。
如果操作步驟正確,按下F5進(jìn)行調(diào)試,會(huì)彈出如下的提示框,VS具有提升的權(quán)限。
這樣我們編寫的應(yīng)用程序在運(yùn)行后,就會(huì)首先彈出這樣一個(gè)提示框 , 點(diǎn)【Yes】后,程序才可以繼續(xù)運(yùn)行,并且獲得系統(tǒng)管理員的權(quán)限。
方法2:
為工程項(xiàng)目添加一個(gè)類,應(yīng)用程序清單文件(app.manifest)。
然后可以看到app.manifest的位置不在Properties屬性里了,變成在引用里了,其節(jié)點(diǎn)內(nèi)容也少了一些。
剩下的方法和上面相同。這樣跳過(guò)了【啟用ClickOnce安全設(shè)置】這步,直接執(zhí)行,不會(huì)出錯(cuò)了。
相關(guān)文章
C#實(shí)現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說(shuō)明
這篇文章主要介紹了C#實(shí)現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說(shuō)明的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12C#?彈出窗口show()和showdialog()的兩種方式
本文主要介紹了C#?彈出窗口show()和showdialog()的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07C#實(shí)現(xiàn)在控制臺(tái)輸出當(dāng)前系統(tǒng)時(shí)間的方法
這篇文章主要介紹了C#實(shí)現(xiàn)在控制臺(tái)輸出當(dāng)前系統(tǒng)時(shí)間的方法,涉及C#時(shí)間函數(shù)DateTime.Now的使用方法,需要的朋友可以參考下2015-04-04C#導(dǎo)出Excel的幾種常見方式及詳細(xì)實(shí)現(xiàn)步驟
excel導(dǎo)出在C#代碼中應(yīng)用己經(jīng)很廣泛了,我這里就做些總結(jié),下面這篇文章主要給大家介紹了關(guān)于C#導(dǎo)出Excel的幾種常見方式及詳細(xì)實(shí)現(xiàn)步驟的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06微信公眾平臺(tái)開發(fā)教程(三) 基礎(chǔ)框架搭建
這篇文章主要介紹了微信公眾平臺(tái)開發(fā)教程(三) 基礎(chǔ)框架搭建,具有一定的參考價(jià)值,有需要的可以了解一下。2016-12-12C#采用OpenXml實(shí)現(xiàn)給word文檔添加文字
這篇文章主要介紹了C#采用OpenXml實(shí)現(xiàn)給word文檔添加文字的方法,包括了用法的實(shí)例分析,是非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09C# 特性AttributeUsage簡(jiǎn)介與使用教程
這篇文章主要介紹了C# 特性AttributeUsage簡(jiǎn)介與使用教程,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05c# String擴(kuò)展 讓你在PadLeft和PadRight時(shí)不再受單雙字節(jié)問(wèn)題困擾
這篇文章主要介紹了c# String擴(kuò)展 讓你在PadLeft和PadRight時(shí)不再受單雙字節(jié)問(wèn)題困擾,需要的朋友可以參考下2020-04-04