C# 實現winform軟體最小化到系統托盤,開機自啟動 問題描述 用戶的電腦是win7系統,應用系統在用戶電腦上運行時部分功能需要訪問註冊表,但是使用這些功能時會提示用戶沒有許可權訪問註冊表。原因分析 win7及後續高版本系統對用戶的許可權控制比較嚴,就算用戶的許可權較高,但用戶啟動程式時預設還是以普通 ...
C# 實現winform軟體最小化到系統托盤,開機自啟動
問題描述
用戶的電腦是win7系統,應用系統在用戶電腦上運行時部分功能需要訪問註冊表,但是使用這些功能時會提示用戶沒有許可權訪問註冊表。
原因分析
win7及後續高版本系統對用戶的許可權控制比較嚴,就算用戶的許可權較高,但用戶啟動程式時預設還是以普通用戶的許可權啟動,因此造成應用程式訪問操作系統相關功能時受限。可以啟動應用程式時選擇已管理員身份運行,但是這樣用戶每次啟動程式都不方便,而且有些用戶也沒有管理員許可權。最好是應用系統啟動時已用戶的最大許可權運行。
解決方案
C#編寫的WinForm程式可以通過配置文件方式設置程式啟動時的運行許可權。具體步驟如下:
1.在Visual Studio解決方案資源管理器中的項目上點右鍵,選擇添加->新建項。
在這裡插入圖片描述
2.在添加新項視窗中選擇應用程式清單文件,然後點擊添加按鈕。
在這裡插入圖片描述
3.在項目中會新增一個app.manifest文件,雙擊打開改文件,其實是一個xml文件。其中的requestedExecutionLevel標簽用於設置程式啟動時的 運行許可權,其值主要包括以下三個(參考文獻中介紹的更為詳細,可以查看參考文獻1瞭解更多內容):
asInvoker:可以理解為以普通用戶身份運行,詳細的介紹請見參考文獻1;
requireAdministrator:程式啟動時需要當前用戶具有管理員許可權;
highestAvailable:以當前用戶具有的最大許可權運行。
在這裡插入圖片描述
在這裡插入圖片描述
程式預設設置的為asInvoker,為了讓用戶能訪問操作系統相關功能,可以將requestedExecutionLevel值設置為highestAvailable,這樣應用系統就能以當前用戶最大的許可權運行了。
參考文獻:
[1]應用程式清單 Manifest 中各種 UAC 許可權級別的含義和效果,https://walterlv.blog.csdn.net/article/details/89631840
————————————————
版權聲明:本文為CSDN博主「gc_2299」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/gc_2299/article/details/110503703