c#中程序以管理員身份運行的三種辦法

三種辦法:

一、設置程序本身的屬性:勾選“以管理員身份運行此程序”,必要時設置“更改所有用戶設置-以管理員身份運行此程序”,當然這種辦法是被動的,也不是最實際的辦法;

二、代碼法:


static void Main(string[] Args)
        {
            /**
             * 當前用戶是管理員的時候,直接啓動應用程序
             * 如果不是管理員,則使用啓動對象啓動程序,以確保使用管理員身份運行
             */
            //獲得當前登錄的Windows用戶標示
            System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
            //創建Windows用戶主題
            Application.EnableVisualStyles();
 
            System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
            //判斷當前登錄用戶是否爲管理員
            if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
            {
                //如果是管理員,則直接運行
 
                Application.EnableVisualStyles();
                Application.Run(new Form1());
            }
            else
            {
                //創建啓動對象
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                //設置運行文件
                startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
                //設置啓動參數
                //startInfo.Arguments = String.Join(" ", Args);
                //設置啓動動作,確保以管理員身份運行
                startInfo.Verb = "runas";
                try
                {
                    //如果不是管理員,則啓動UAC
                    System.Diagnostics.Process.Start(startInfo);
                    //退出
                    System.Windows.Forms.Application.Exit();
                }
                catch
                { 
                }
            }
        }

三、配置法:
  vs2010中,項目右鍵屬性--安全性---啓用ClickOnce安全設置
 
  然後程序目錄下會生成一個app.manifest文件
 
  <requestedExecutionLevel level="asInvoker" uiAccess="false" />
  改爲
  <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
   
  然後在"安全性"中再勾去"啓用ClickOnce安全設置"後,重新編譯即可。


 

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