日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#程序以管理员权限运行

發(fā)布時間:2025/4/16 C# 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#程序以管理员权限运行 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文:C#程序以管理員權限運行

C#程序以管理員權限運行
在Vista 和 Windows 7 及更新版本的操作系統(tǒng),增加了 UAC(用戶賬戶控制) 的安全機制,如果 UAC 被打開,用戶即使以管理員權限登錄,其應用程序默認情況下也無法對系統(tǒng)目錄、系統(tǒng)注冊表等可能影響系統(tǒng)正常運行的設置進行寫操作。這個機制大大增強了系統(tǒng)的安全性,但對應用程序開發(fā)者來說,我們不能強迫用戶去關閉UAC,但有時我們開發(fā)的應用程序又需要以 Administrator 的方式運行,如何實現(xiàn)這樣的功能呢?

下面演示 C# 程序如何實現(xiàn)提示用戶以管理員權限運行。

本例以WinForm程序演示,新建一項目生成后進行相應修改:

方法一:通過 System.Diagnostics.Process.Start() 方式啟動:

實現(xiàn)方法: 修改默認生成的Program文件,修改后的代碼如下:

由于已經(jīng)在代碼上做了注釋,所以不再詳細說明;

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 else 23 { 24 //創(chuàng)建啟動對象 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 try 32 { 33 System.Diagnostics.Process.Start(startInfo); 34 } 35 catch 36 { 37 return; 38 } 39 //退出 40 Application.Exit(); 41 } 42 } 43 }

效果:由于是通過System.Diagnostics.Process.Start() 方式外部調(diào)用啟動,所以直接通過VS運行時,是不會提示VS也需要管理員權限,只有程序本身需要管理員權限,與生成應用程序的程序不同。這點是和方法二實現(xiàn)的主要不同之處。

本文地址:http://www.cnblogs.com/Interkey/p/RunAsAdmin.html

方法二:通過添加應用程序清單文件:

在 項目 上 添加新項 選擇“應用程序清單文件” 然后單擊 添加 按鈕

添加后,默認打開app.manifest文件,將:

<requestedExecutionLevel? level="asInvoker" uiAccess="false" />

修改為:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

然后打開 項目屬性 ,將 應用程序 標簽頁中的 資源 中的 清單 修改為新建的 app.manifest。

重新生成項目,再次打開程序時就會提示 需要以管理員權限運行。

需要注意的是:如果在VS中 啟動調(diào)試 的話,就會提示 此任務要求應用程序具有提升的權限。如下圖:

選擇 使用其他憑據(jù)重新啟動 即可。

方法三:直接修改程序文件的屬性

右擊程序文件,在彈出的屬性對話框中的 兼容性 標簽頁中

勾選“以管理員身份運行此程序”即可。

?

總結

以上是生活随笔為你收集整理的C#程序以管理员权限运行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。