C# 程序以管理员权限运行
在 Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,
如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录、
系统注册表等可能影响系统正常运行的设置进行写操作。这个机制大大增强了系统的安全性,
但对应用程序开发者来说,我们不能强迫用户去关闭 UAC,但有时我们开发的应用程序又需要
以 Administrator 的方式运行,如何实现这样的功能呢?
下面演示 C# 程序如何实现提示用户以管理员权限运行。
本例以 WinForm 程序演示,新建一项目生成后进行相应修改:
方法一:通过 System.Diagnostics.Process.Start() 方式启动:
实现方法: 修改默认生成的 Program 文件,修改后的代码如下:
由于已经在代码上做了注释,所以不再详细说明;
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 //判断当前登录用户是否为管理员