阅读过程输出的替代方案

时间:2016-01-22 03:10:29

标签: c# process io

我想知道是否有其他替代方法可以在C#中捕获进程输出。 我有以下代码

Process __process = new Process();
__process.StartInfo.Verb = "runas";
__process.StartInfo.FileName = "some file path here";
__process.StartInfo.UseShellExecute = true;
__process.Start();
__process.WaitForExit(300000);

这里将UseShellExecute设置为true的原因是因为动词" runas"以管理员身份运行因此,我无法再重定向程序的标准输出。 如果我不能使用StandardOutput,那么我可以捕获Process的输出的其他方法是什么?我想过让程序写入文件,然后从该文件中读取,但这看起来效率不高。

1 个答案:

答案 0 :(得分:0)

如果您可以对实际程序进行编码,那么您就开始使用可能是最佳/最有效解决方案的管道。可能有一种方法可以通过其他命令/程序来管理流程输出。

Pipe Operations in the .Net Framework

您可以创建一个名为anonymous pipe并将其名称/ id /句柄作为参数传递给该程序。然后,程序可以连接到管道的另一端,并将数据流回到调用它的应用程序。

编辑我假设这一切都在Windows环境中运行,我不知道在UseShellExecute = true启动的进程上使用管道是否有效..