C#CMD-提示时的交互

C#CMD-提示时的交互,c#,cmd,openssl,C#,Cmd,Openssl,由于对生成自签名证书的不断要求,我开始开发一个简单的控制台程序,它可以加快这个过程。它需要一些参数,启动一个CMD进程,并在生成过程中使用openssl 其中一个openssl命令接受有关可分辨名称的一些输入,另一个命令接受有关CA密码的输入。对于这些提示,我在StandardInput stream上写了一行,它还可以发送一个回车键笔划。对于第一种情况,它似乎起作用,但第二个提示符挂起并且从未收到它。如何解决这个问题 命令: openssl x509 -req -in {Domain}.cs

由于对生成自签名证书的不断要求,我开始开发一个简单的控制台程序,它可以加快这个过程。它需要一些参数,启动一个CMD进程,并在生成过程中使用openssl

其中一个openssl命令接受有关可分辨名称的一些输入,另一个命令接受有关CA密码的输入。对于这些提示,我在StandardInput stream上写了一行,它还可以发送一个回车键笔划。对于第一种情况,它似乎起作用,但第二个提示符挂起并且从未收到它。如何解决这个问题

命令:

 openssl x509 -req -in {Domain}.csr -CA {PathCA} -CAkey {PathKeyCA} -CAcreateserial -out {Domain}.crt -days 825 -sha256 -extfile {Domain}.ext
代码:


发现异常了吗?没有,它只是写了一行而没有提交
 Process cmd = new Process();

 cmd.StartInfo.FileName = "cmd.exe";
 cmd.StartInfo.RedirectStandardInput = true;
 cmd.StartInfo.UseShellExecute = false;

 cmd.Start();

 using (StreamWriter sw = cmd.StandardInput) {

     if (sw.BaseStream.CanWrite) {
         foreach (Models.Command command in commands) {

             try {

                 if (!command.Prompt) {
                     // Command execution
                     sw.WriteLine(command.Descripcion);
                 } else {
                     // Input prompt
                     cmd.StandardInput.WriteLine(command.Descripcion);
                     cmd.StandardInput.Flush();
                 }
             } catch (Exception ex2) {


             }
         }
     }
 }
            
 cmd.Close();