我正在通过C#System.Diagnostics.Process运行命令行进程。
当我在cmd.exe中输入相同的命令时,它会立即提示我输入密码。输入密码后,流程继续完成。
但是,使用System.Diagnotic.Process,我重定向的标准输出都没有产生密码提示。如果是这样,我会使用重定向的标准输入的WriteLine方法以编程方式输入它。
通常不使用Process对象在输出中看到提示吗?提示是否与其他标准输出线不同?如果是这样,如何将“prompt-events”带入我的应用程序,输入输入,然后让进程按照与cmd.exe相同的方式进行?
答案 0 :(得分:2)
当您重定向用C / C ++编写的程序的输出时,stdout流将切换到缓冲模式。提示符存在,它从来没有从内部缓冲区刷新到流,因为缓冲区没有填满容量。只需编写密码就可以解决您的问题。
答案 1 :(得分:0)
为ProcessStartInfo
电话准备Process.Start
时,请务必正确设置以下属性:
RedirectStandardInput
RedirectStandardOutput
RedirectStandardError
创建Process
对象后,请确保对相应的重定向流使用以下属性:
StandardInput
StandardOutput
StandardError