【轉】 C#程式以管理員權限運行

來源:互聯網
上載者:User

標籤:

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#程式以管理員權限運行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.