如何以.net的不同用户身份启动外部程序(进程)

时间:2012-03-14 14:43:47

标签: c# .net process

在我的.net网络应用程序中,我需要在另一个用户帐户(一个具有更高权限的帐户)下启动另一个程序作为新进程。我的代码运行没有错误,但我从来没有得到任何输出(我已经尝试重定向输出),并且程序似乎根本没有执行。这不是用户身份验证详细信息的错误,我尝试了一个伪造的用户名,并且确实在这种情况下会抛出一个有效的异常。没有任何内容添加到事件日志中。

 SecureString passwordString = new SecureString();
 foreach (char c in "MyPassword")
 {
     passwordString.AppendChar(c);
 }

var process = new System.Diagnostics.Process
{
    StartInfo =
    {
        UserName = "myuser", Password = passwordString, Domain = "MyDomain",
        WorkingDirectory = HttpContext.Request.MapPath("~/bin"),
        UseShellExecute = false,
        FileName = HttpContext.Request.MapPath("~/bin") + "\\ServerCertificateImporter.exe",
        Arguments = instanceLocationId.ToString(),
        CreateNoWindow = true,
        RedirectStandardInput = false,
        RedirectStandardOutput = false,
        RedirectStandardError = false
    }
};

process.Start();
process.WaitForExit();
process.Close();

1 个答案:

答案 0 :(得分:0)

正如Yahia指出的那样,这是因为我试图使用不同的用户帐户调用程序 - 而且Windows不希望我这样做。