将命令注入基于命令行的进程

时间:2011-08-03 19:05:03

标签: c#-4.0

目前我正在研究服务器管理器。服务器是命令行应用程序。服务器通过Process类运行,窗口被隐藏。我一直试图想出一种方法将命令注入其中(save-all),而不显示服务器窗口。我曾尝试使用StreamWriter和Process的标准输入,但这不起作用。有谁知道如何让这个工作?

1 个答案:

答案 0 :(得分:0)

为了能够重定向进程的任何标准I / O流,您需要禁用shell执行。你可能没有。你应该能够这样做:

var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = Environment.GetEnvironmentVariable("COMSPEC"),
        RedirectStandardInput = true,
        UseShellExecute = false,
    },
};
if (process.Start())
{
    process.StandardInput.WriteLine("echo FOOBAR!");
    process.WaitForExit(3000);
    process.StandardInput.WriteLine("exit");
    process.WaitForExit();
}