C# 如何以不同于.net的用户身份启动外部程序(进程)
在我的.net web应用程序中,我需要启动另一个程序作为一个新的进程-在一个具有更高权限的不同用户帐户下。我的代码运行时没有错误,但我从未得到任何输出,我尝试重定向输出,程序似乎根本没有执行。这不是用户身份验证详细信息的错误,我尝试了一个伪造的用户名,在这种情况下它肯定会抛出一个有效的异常。事件日志中未添加任何内容C# 如何以不同于.net的用户身份启动外部程序(进程),c#,.net,process,C#,.net,Process,在我的.net web应用程序中,我需要启动另一个程序作为一个新的进程-在一个具有更高权限的不同用户帐户下。我的代码运行时没有错误,但我从未得到任何输出,我尝试重定向输出,程序似乎根本没有执行。这不是用户身份验证详细信息的错误,我尝试了一个伪造的用户名,在这种情况下它肯定会抛出一个有效的异常。事件日志中未添加任何内容 SecureString passwordString = new SecureString(); foreach (char c in "MyPassword") {
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();
正如Yahia指出的,这是因为我试图用不同的用户帐户调用一个程序,而windows不希望我这样做。在某些情况下,较新的windows版本会阻止具有不同权限级别的两个进程之间的通信。。。不要在web应用程序中执行此操作。。。你可以让它工作,但只有通过添加一些安全风险…这是win 7/win server 2008…然后我写的是发生在你身上的事情-安全模型已由微软从Vista开始修改和扩展。。。