.NET中提升當前進程的UAC權限

       User Account Control (UAC)是從windows vista系統開始增加的一個安全控制組件。正常情況下,應用程序都運行在較低的權限級別上,但有時不得不強制要求當前進程以較高的安全級別上運行,這時就希望程序自身能夠強制要求用戶提升當前進程的權限,下面的方法就實現了權限檢測與提升。

/// <summary>
/// 檢查當前進程是否以administrator身份運行
/// </summary>
/// <returns>
/// </returns>
public bool IsRunAsAdmin()
{
	WindowsIdentity id = WindowsIdentity.GetCurrent();	
WindowsPrincipal principal = new WindowsPrincipal(id); return principal.IsInRole(WindowsBuiltInRole.Administrator); }

如果當前進程不是以Administrator身份運行,則提升進程權限:

       public void Elevate()
       {
            // 如果不是以administrator身份運行
if (!IsRunAsAdmin()) { // 以administrator身份,重啓自己 ProcessStartInfo proc = new ProcessStartInfo(); proc.UseShellExecute = true; proc.WorkingDirectory = Environment.CurrentDirectory; proc.FileName = Application.ExecutablePath; proc.Verb = "runas"; try { Process.Start(proc); } catch { // 如果用戶拒絕提升權限,直接退出 } Application.Exit(); // 退出 } else { MessageBox.Show("正以administrator運行當前進程", "UAC"); } }

     不僅僅是在UAC控制下,即便是在Windows XP下以非管理員用戶啓動程序,也會彈出runas對話框,要求以管理員身份運行,這樣就能保證程序總是在最高用戶權限下運行!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章