C# 以管理员身份启动应用程序的第二个实例
我希望我的应用程序不需要管理员来使用它 我应该是一个正常的用户可用 当用户想要更改应用程序的某些设置时,我需要管理员权限 所以我想启动第二个需要管理员权限的应用程序实例。 与用户协议请求等 有没有办法做到这一点 我试着:C# 以管理员身份启动应用程序的第二个实例,c#,.net,user-permissions,C#,.net,User Permissions,我希望我的应用程序不需要管理员来使用它 我应该是一个正常的用户可用 当用户想要更改应用程序的某些设置时,我需要管理员权限 所以我想启动第二个需要管理员权限的应用程序实例。 与用户协议请求等 有没有办法做到这一点 我试着: Process p = new Process(); p.StartInfo.WindowStyle = ProcessWindowStyle.Normal; p.StartInfo.FileName = Application.ExecutablePath; p.StartI
Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo.FileName = Application.ExecutablePath;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
if (System.Environment.OSVersion.Version.Major >= 6)
{
p.StartInfo.Verb = "runas";
}
p.Start();
但它似乎不起作用。您可以创建一个具有管理员权限的帐户 然后使用管理员帐户的相应值填充ProcessStartInfo实例上的用户、密码属性 比如:
var psi = new ProcessStartInfo
{
FileName = "notepad.exe",
UserName = "admin",
Domain = "",
Password = pass,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
Process.Start(psi);
事实证明,我必须在ProcessStartInfo中使用UseShellExecute,而不是进程。 更多的解释
我不认为一个未提升的权限进程可以启动一个提升的权限进程可能是
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Application.ExecutablePath;
proc.Verb = "runas";
try
{
Process.Start(proc);
}
catch
{
return; //U have a BIG problem!
}