我可以使用以下C#代码运行控制台进程。目标也是收集此过程的所有输出:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.Arguments = commandLine;
proc.StartInfo.FileName = "signtool.exe";
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
if (proc.WaitForExit(10000))
{
Debug.WriteLine(proc.StandardOutput.ReadToEnd());
}
我收到的是:
“完成添加额外商店\ r \ n”
但是当我从Windows命令行执行相同操作时,我得到了这个:
Done Adding Additional Store
SignTool Error: File not found: C:\SomeBadFile.exe
为什么我只使用我的代码获得第一行输出?
答案 0 :(得分:2)
如果您没有查看Process.StandardError Property
,看到您丢失的行似乎是错误消息当Process将文本写入其标准错误流时,该文本为 通常显示在控制台上。通过重定向StandardError 流,您可以操纵或抑制进程的错误输出。 例如,您可以过滤文本,以不同方式对其进行格式化或写入 输出到控制台和指定的日志文件。
答案 1 :(得分:1)
您是否尝试重定向并观看标准错误?这似乎可能是输出到错误流。