C# 基礎(十八)C# 工程自動生成app.manifest、AssemblyInfo.cs、Resources.Designer.cs、Settings.Designer.cs檔案的作用
一、簡介
本文主要介紹下面幾個檔案:
二、app.manifest檔案的作用
2.1、設定軟體以Windows 管理員身份執行。為什麼要這樣設定管理員身份執行?因為這樣使得自己做的程式更加安全,不會隨便被別人更改。
參考 https://zhidao.baidu.com/question/1178730173827327819.html
在Win7系統中,需要管理員身份運的功能實際上是使用者帳戶控制(簡稱UAC機制),它有助於預防有害程式對電腦進行更改,防範黑客或惡意軟體的攻擊。當程式欲對電腦執行重要更改時,UAC即會通知使用者,並詢問是否許可執行更改
2.2、轉
通常我們使用c#編寫的程式不會彈出這個提示,也就無法以管理員身分執行。微軟的作業系統使用微軟的產品方法當然是有的,通過app.manifest配置可以使程式開啟的時候,彈出UAC提示需要得到允許才可以繼續,這樣就獲得了管理員的許可權來執行程式
微軟在Windows Vista開始引入了UAC(使用者帳戶控制)新技術(點選這兒瞭解什麼是UAC)。當程式執行時需要許可權的話,UAC會彈出警告訊息:讓使用者確認是否同意允許這個程式改變你的計算機配置,windows需要得到你的許可才可以讓程式繼續執行下去。
通常我們使用c#編寫的程式不會彈出這個提示,也就無法以管理員身分執行。微軟的作業系統使用微軟的產品方法當然是有的,通過app.manifest配置可以使程式開啟的時候,彈出UAC提示需要得到允許才可以繼續,這樣就獲得了管理員的許可權來執行程式。
方法如下:
開啟vs2005、vs2008等工程,在【解決方案資源管理器】裡檢視是否有app.manifest這個檔案,如果沒有的話,通過以下方法建立:
方法1:
1、在【解決方案資源管理器】右鍵工程名稱選擇屬性;
2、在彈出的該對話方塊中,選擇【安全性】選項卡。
3、勾選【啟用ClickOnce安全設定】,並選中【這是完全可信的應用程式】。
4、儲存工程,這時候app.manifest就自動建立了。
開啟app.manifest把預設的配置修改一下,通過程式碼的註釋,可以知道需要修改的節點是【requestedExecutionLevel】
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具有提升的許可權。
這樣我們編寫的應用程式在執行後,就會首先彈出這樣一個提示框 , 點【Yes】後,程式才可以繼續執行,並且獲得系統管理員的許可權。
方法2:
為工程專案新增一個類,應用程式清單檔案(app.manifest)。
然後可以看到app.manifest的位置不在Properties屬性裡了,變成在引用裡了,其節點內容也少了一些。
剩下的方法和上面相同。這樣跳過了【啟用ClickOnce安全設定】這步,直接執行,不會出錯了。
三、AssemblyInfo.cs檔案的作用
http://blog.sina.com.cn/s/blog_7ade159d0102wmg9.html
https://blog.csdn.net/zhaoyuqings/article/details/77480727
1、檢視版本資訊
1.1、你可以右擊——屬性——應用程式——程式集資訊,檢視軟體的版本資訊:
1.2、你可以右擊專案生產EXE檔案,檢視詳細資訊:
2、讀取版本資訊,給他類使用。
四、Resources.resx和Resources.Designer.cs檔案的作用
4.1、https://zhidao.baidu.com/question/151625754.html
* resx檔案是資原始檔,裡面定義了你程式需要用到的字串、圖示等。單獨提出一個檔案來是為了方便以後的多語種版本本地化(如果需要的話)。
4.2、https://blog.csdn.net/microcosmv/article/details/52534613
Resources.designer.cs 存放窗體的一些控制元件頁面等肉眼看見的一些東西和相關的配置資訊之類的一些東西;
Resources.resx是該窗體使用的一些資源資訊,例如使用了哪些資源,存放位置等等
4.3、(重點)https://www.jb51.net/article/101845.htm
五、Settings.settings和Settings.Designer.cs檔案的作用
往後再看:
https://blog.csdn.net/zxd9790902/article/details/52119340