1

我可以使用以下 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

为什么我的代码只得到第一行输出?

4

2 回答 2

2

如果您不查看Process.StandardError 属性,则看到您缺少的行似乎是一条错误消息

当 Process 将文本写入其标准错误流时,该文本通常会显示在控制台上。通过重定向 StandardError 流,您可以操纵或抑制进程的错误输出。例如,您可以过滤文本、设置不同的格式,或者将输出写入控制台和指定的日志文件。

于 2013-08-14T04:36:20.620 回答
1

您是否也尝试过重定向和观看 StandardError?似乎很可能这是输出到错误流。

于 2013-08-14T04:36:42.390 回答