public static void RunAsAdministrator(string[] args = null)
{
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
if (!principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
startInfo.Verb = "runas";
string _args = "";
foreach (string str in args)
_args += string.Format("\"{0}\" ", str);
startInfo.Arguments = _args;
System.Diagnostics.Process.Start(startInfo);
System.Windows.Forms.Application.Exit();
return;
}
}
public static void RunAsAdministratorWhenNoXP(string[] args = null)
{
bool isxp = Environment.OSVersion.Version.Major == 10 ? false :
(Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major >= 6
|| (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 1));
if (!isxp)
{
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
if (!principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
startInfo.Verb = "runas";
string _args = "";
foreach (string str in args)
_args += string.Format("\"{0}\" ", str);
startInfo.Arguments = _args;
System.Diagnostics.Process.Start(startInfo);
Environment.Exit(0);
return;
}
}
}