1 private static bool IsAdministrator()
2 {
3 var identity = WindowsIdentity.GetCurrent();
4 if (identity != null)
5 {
6 var principal = new WindowsPrincipal(identity);
7 return principal.IsInRole(WindowsBuiltInRole.Administrator);
8 }
9 return false;
10 }
这个方法返回当前用户是否具有管理员权限。 在Main方法里编写代码:
1 /// <summary>
2 /// 应用程序的主入口点。
3 /// </summary>
4 [STAThread]
5 private static void Main(string[] args)
6 {
7 if (IsAdministrator())
8 {//如果具有管理员权限,直接运行程序
9 Application.EnableVisualStyles();
10 Application.SetCompatibleTextRenderingDefault(false);
11 Application.Run(new FrmMain());
12 }
13 else
14 {//如果不具有管理员权限,则以管理员身份执行可执行程序
15 var startInfo = new ProcessStartInfo
16 {
17 FileName = Application.ExecutablePath,//进程目标文件
18 Arguments = string.Join(" ", args),//进程参数
19 Verb = "runas"//管理员权限
20 };
21 Process.Start(startInfo);
22 }
23 }
注:需要引入命名空间System.Security.Principal