C#以具有管理员权限的其他用户身份启动进程

时间:2018-10-16 09:43:05

标签: c# process

我想以管理员身份开始一个进程。
管理员信用凭证经过硬编码,因此用户不知道管理员信用凭证可以以admin身份打开该进程。

我尝试过

var process = new ProcessStartInfo 
{
    FileName = "path",
    UserName = "userName",
    Domain = "myDomain",
    Password = mySecritPassword,
    UseShellExecute = false,
    Verb = "runas",
    RedirectStandardError = true,
    RedirectStandardInput = true,
    RedirectStandardOutput = true
 };

 Process.Start(process);

但是我的过程是在没有管理员权限的情况下开始的

有什么我忘了吗?

1 个答案:

答案 0 :(得分:0)

您需要将UseShellExecute设置为true。所以这应该工作:

var process = new ProcessStartInfo 
{
    FileName = "path",
    UserName = "userName",
    Domain = "myDomain",
    Password = mySecritPassword,
    UseShellExecute = true,
    Verb = "runas",
    RedirectStandardError = true,
    RedirectStandardInput = true,
    RedirectStandardOutput = true
 };

 Process.Start(process);

您需要接受UAC提示符才能获得管理员特权,并且由于某些原因,仅当您使用ShellExecute时才显示UAC提示符。有关更多信息(但不多),请参阅本文:Teach Your Apps To Play Nicely With Windows Vista User Account Control