以管理员身份运行程序

时间:2022-03-17 14:44:20

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

}