我需要从 C# 自动化外部 Windows 控制台应用程序。应用程序基本上是与外部设备的接口。当我调用应用程序时,它会要求我进行身份验证,即输入密码并提示“输入密码:”。现在没有办法将此应用程序配置为在没有交互式密码提示的情况下运行。
因此,我想通过在提示时发送密码然后触发将在外部设备上执行然后获取输出的命令来从 C# 中自动执行相同的操作。我知道进程类,并且我有一些指针,比如我可以为此目的使用管道(不确定?)。
因为在我寻求帮助/指导之前,我还没有处理过这种自动化。
提前致谢。
这样做的方法是使用重定向成员,例如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();