Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以不同于.net的用户身份启动外部程序(进程)_C#_.net_Process - Fatal编程技术网

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

C# 如何以不同于.net的用户身份启动外部程序(进程),c#,.net,process,C#,.net,Process,在我的.net web应用程序中,我需要启动另一个程序作为一个新的进程-在一个具有更高权限的不同用户帐户下。我的代码运行时没有错误,但我从未得到任何输出,我尝试重定向输出,程序似乎根本没有执行。这不是用户身份验证详细信息的错误,我尝试了一个伪造的用户名,在这种情况下它肯定会抛出一个有效的异常。事件日志中未添加任何内容 SecureString passwordString = new SecureString(); foreach (char c in "MyPassword") {

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

 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开始修改和扩展。。。