C# 判断是否以管理员身份运行,如果不是管理员身份则以管理员身份运行核心代码如下
using System; using System.Security.Principal; using System.Windows.Forms; namespace WindowsFormsApp2 { static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { // 检查当前用户是否已经是管理员 bool isAdmin = CheckIfAdmin(); if (!isAdmin) { // 如果不是管理员,使用提升权限启动当前应用程序 RestartElevated(); return; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } private static bool CheckIfAdmin() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); } private static void RestartElevated() { // 获取当前执行的exe文件路径 string exeName = System.Reflection.Assembly.GetExecutingAssembly().Location; // 启动新的进程,以管理员权限运行 System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo(); processStartInfo.UseShellExecute = true; processStartInfo.Verb = "runas"; processStartInfo.FileName = exeName; try { System.Diagnostics.Process.Start(processStartInfo); // 当前进程退出 Application.Exit(); } catch (Exception ex) { MessageBox.Show("提升权限失败: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
本文来自 www.luofenming.com