摘自:http://bbs.csdn.net/topics/380178685
首先检测是否需要“以管理员身份运行”,如果需要程序重启并自动“以管理员身份运行”,用到如下两个方法:
public static bool IsNeedRunAsAdmin() { //return true; //操作系统版本号6及以上,代表Vista/Win7以后的操作系统。 if (Environment.OSVersion.Version.Major >= 6) { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); //如果已使用管理员身份运行 if (principal.IsInRole(WindowsBuiltInRole.Administrator)) { return false; } else { return true; } } return false; } private void RunasAdmin() { ProcessStartInfo start = new ProcessStartInfo(); start.WorkingDirectory = Application.StartupPath; start.FileName = System.IO.Path.GetFileName(Application.ExecutablePath); ; // 需要以管理员权限启动的文件 start.Verb = "runas"; // 这个动词将弹出 UAC 提示 try { Process p = Process.Start(start); this.Close(); } catch { this.Close(); } }