標籤:
C#程式以管理員權限運行
在Vista 和 Windows 7 及更新版本的作業系統,增加了 UAC(使用者賬戶控制) 的安全機制,如果 UAC 被開啟,使用者即使以管理員權限登入,其應用程式預設情況下也無法對系統目錄、系統註冊表等可能影響系統正常啟動並執行設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發人員來說,我們不能強迫使用者去關閉UAC,但有時我們開發的應用程式又需要以 Administrator 的方式運行,如何?這樣的功能呢?
下面示範 C# 程式如何?提示使用者以管理員權限運行。
本例以WinForm程式示範,建立一項目產生後進行相應修改:
方法一:通過 System.Diagnostics.Process.Start() 方式啟動:
實現方法: 修改預設產生的Program檔案,修改後的代碼如下:
由於已經在代碼上做了注釋,所以不再詳細說明;
1 static class Program 2 { 3 [STAThread] 4 static void Main() 5 { 6 Application.EnableVisualStyles(); 7 Application.SetCompatibleTextRenderingDefault(false); 8 9 /**10 * 目前使用者是管理員的時候,直接啟動應用程式11 * 如果不是管理員,則使用啟始物件啟動程式,以確保使用管理員身份運行12 */13 //獲得當前登入的Windows使用者標示14 System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();15 System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);16 //判斷當前登入使用者是否為管理員17 if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))18 {19 //如果是管理員,則直接運行20 Application.Run(new Form1());21 }22 else23 {24 //建立啟始物件25 System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();26 startInfo.UseShellExecute = true;27 startInfo.WorkingDirectory = Environment.CurrentDirectory;28 startInfo.FileName = Application.ExecutablePath;29 //設定啟動動作,確保以管理員身份運行30 startInfo.Verb = "runas";31 try32 {33 System.Diagnostics.Process.Start(startInfo);34 }35 catch36 {37 return;38 }39 //退出40 Application.Exit();41 }42 }43 }
效果:由於是通過System.Diagnostics.Process.Start() 方式外部調用啟動,所以直接通過VS運行時,是不會提示VS也需要管理員權限,只有程式本身需要管理員權限,與產生應用程式的程式不同。這點是和方法二實現的主要不同之處。
本文地址:http://www.cnblogs.com/Interkey/p/RunAsAdmin.html
方法二:通過添加應用程式資訊清單檔案:
在 項目 上 添加新項 選擇“應用程式資訊清單檔案” 然後單擊 添加 按鈕
添加後,預設開啟app.manifest檔案,將:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
修改為:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
然後開啟 項目屬性 ,將 應用程式 標籤頁中的 資源 中的 清單 修改為建立的 app.manifest。
重建項目,再次開啟程式時就會提示 需要以管理員權限運行。
需要注意的是:如果在VS中 啟動調試 的話,就會提示 此任務要求應用程式具有較高的權限。如:
選擇 使用其他憑據重新啟動 即可。
方法三:直接修改程式檔案的屬性
右擊程式檔案,在彈出的屬性對話方塊中的 相容性 標籤頁中
勾選“以管理員身份運行此程式”即可。
form:http://blog.csdn.net/huwei2003/article/details/24235367
【轉】 C#程式以管理員權限運行