Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将密码/字符串发送到外部控制台应用程序C#_C#_Process_Console_Pipe_Prompt - Fatal编程技术网

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

将密码/字符串发送到外部控制台应用程序C#,c#,process,console,pipe,prompt,C#,Process,Console,Pipe,Prompt,我需要从C#自动化外部windows控制台应用程序。应用程序基本上是与外部设备的接口。当我调用应用程序时,它会要求我进行身份验证,即输入密码,并提示类似“输入密码:”。目前无法将此应用程序配置为在没有交互式密码提示的情况下运行 因此,我想通过在C#提示时发送密码,然后发出命令,这些命令将在外部设备上执行,然后获取输出,从而实现C#的自动化。我知道ProcessClass,我有一些指针,比如我可以使用管道来实现这个目的(不确定?) 因为我在这之前没有处理过这种自动化,所以我正在寻求帮助/指导 提前

我需要从C#自动化外部windows控制台应用程序。应用程序基本上是与外部设备的接口。当我调用应用程序时,它会要求我进行身份验证,即输入密码,并提示类似“输入密码:”。目前无法将此应用程序配置为在没有交互式密码提示的情况下运行

因此,我想通过在C#提示时发送密码,然后发出命令,这些命令将在外部设备上执行,然后获取输出,从而实现C#的自动化。我知道ProcessClass,我有一些指针,比如我可以使用管道来实现这个目的(不确定?)

因为我在这之前没有处理过这种自动化,所以我正在寻求帮助/指导


提前感谢。

这样做的方法是使用重定向成员,例如

     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();