摘自: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();
}
}