将密码/字符串发送到外部控制台应用程序C#

3
我需要从C#自动化一个外部的Windows控制台应用程序,该应用程序基本上是与外部设备的接口。当我调用该应用程序时,它会要求我进行身份验证,即输入密码并提示“输入密码:”。目前没有办法配置此应用程序以在无交互式密码提示的情况下运行。
因此,我想通过在提示时发送密码来从C#自动化,并执行一些命令,这些命令将在外部设备上执行,然后抓取输出。我知道有关进程类的信息,我有一些指针,例如我可以使用管道来实现此目的(不确定?)。
由于我以前没有处理过这种自动化,所以我正在寻求帮助/方向。
谢谢您的帮助。
1个回答

5

要实现这一点,可以使用重定向成员,例如ProcessStartInfo.RedirectStandardInput 属性

     Process myProcess = new Process();

     myProcess.StartInfo.FileName = "someconsoleapp.exe";
     myProcess.StartInfo.UseShellExecute = false;
     myProcess.StartInfo.RedirectStandardInput = true;
     myProcess.StartInfo.RedirectStandardOutput = true;
     myProcess.StartInfo.ErrorDialog = false;

     myProcess.Start();

     StreamWriter stdInputWriter  = myProcess.StandardInput;
     StreamReader stdOutputReader  = myProcess.StandardOutput;

     stdInputWriter.WriteLine(password);

     var op = stdOutputReader.ReadLine();

     // close this - sending EOF to the console application - hopefully well written
     // to handle this properly.
     stdInputWriter.Close();


     // Wait for the process to finish.
     myProcess.WaitForExit();
     myProcess.Close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接