如何使用C#System.Diagnostics.Process与提示进行交互?

时间:2010-01-13 00:12:13

标签: c# process

我正在通过C#System.Diagnostics.Process运行命令行进程。

当我在cmd.exe中输入相同的命令时,它会立即提示我输入密码。输入密码后,流程继续完成。

但是,使用System.Diagnotic.Process,我重定向的标准输出都没有产生密码提示。如果是这样,我会使用重定向的标准输入的WriteLine方法以编程方式输入它。

通常不使用Process对象在输出中看到提示吗?提示是否与其他标准输出线不同?如果是这样,如何将“prompt-events”带入我的应用程序,输入输入,然后让进程按照与cmd.exe相同的方式进行?

2 个答案:

答案 0 :(得分:2)

当您重定向用C / C ++编写的程序的输出时,stdout流将切换到缓冲模式。提示符存在,它从来没有从内部缓冲区刷新到流,因为缓冲区没有填满容量。只需编写密码就可以解决您的问题。

答案 1 :(得分:0)

ProcessStartInfo电话准备Process.Start时,请务必正确设置以下属性:

  1. RedirectStandardInput
  2. RedirectStandardOutput
  3. RedirectStandardError
  4. 创建Process对象后,请确保对相应的重定向流使用以下属性:

    1. StandardInput
    2. StandardOutput
    3. StandardError