读取过程输出的替代方法

本文关键字:方法 过程 输出 读取 | 更新日期: 2023-09-27 18:31:27

我想知道是否有其他替代方法可以在 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"以管理员身份运行是必需的。因此,我无法再重定向程序的标准输出。如果我无法使用标准输出,还有哪些其他方法可以捕获进程的输出?我想过让程序写入文件,然后从该文件读取,但这似乎不是很有效。

读取过程输出的替代方法

如果您可以编写实际程序,那么您正在开始使用管道的过程,这可能是最佳/最有效的解决方案。可能有一种方法可以让进程输出由其他命令/程序通过管道传输。

.Net Framework 中的管道操作

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

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