Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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执行多个命令提示符命令#_C#_Command Line_Cmd_Openssl_Command Prompt - Fatal编程技术网

C# 从c执行多个命令提示符命令#

C# 从c执行多个命令提示符命令#,c#,command-line,cmd,openssl,command-prompt,C#,Command Line,Cmd,Openssl,Command Prompt,我正在尝试从c#使用OpenSSL生成私钥。为了做到这一点,我尝试重定向流程标准输入,但仍然存在一些问题。 我提到我想在私钥上使用aes256加密,为了实现这一点,它需要密码,所以,我的问题是我不知道如何将密码传输到进程,我的意思是我创建了进程,我使用OpenSSL和aes256加密运行创建密钥的命令,并且必须输入密码和确认密码 这是我的代码: processcmd1=新流程(); cmd1.StartInfo.FileName=“cmd.exe”; cmd1.StartInfo.Redirec

我正在尝试从c#使用OpenSSL生成私钥。为了做到这一点,我尝试重定向流程标准输入,但仍然存在一些问题。 我提到我想在私钥上使用aes256加密,为了实现这一点,它需要密码,所以,我的问题是我不知道如何将密码传输到进程,我的意思是我创建了进程,我使用OpenSSL和aes256加密运行创建密钥的命令,并且必须输入密码和确认密码

这是我的代码:

processcmd1=新流程();
cmd1.StartInfo.FileName=“cmd.exe”;
cmd1.StartInfo.RedirectStandardInput=true;
cmd1.StartInfo.RedirectStandardOutput=true;
cmd1.StartInfo.CreateNoWindow=true;
cmd1.StartInfo.UseShellExecute=false;
cmd1.StartInfo.WorkingDirectory=@“C:\usr\local\ssl\bin”;
cmd1.Start();
cmd1.StandardInput.WriteLine(“openssl genrsa-aes256-out E:\\testing\u folder\\urian\u test7.com.key.pem 2048”);
cmd1.StandardInput.Flush();
cmd1.StandardInput.WriteLine(“123456”);
cmd1.StandardInput.Flush();
cmd1.StandardInput.WriteLine(“123456”);
cmd1.StandardInput.Flush();
cmd1.StandardInput.Close();
控制台。WriteLine(“我们完成了!你拿到钥匙了!”);
cmd1.Close();
因此,我不知道如何发送私钥生成所需的密码……我的意思是,如果我在cmd/openssl(例如:openssl genrsa-aes256)中运行该命令,它将生成RSA私钥,然后它要求我引入密码短语和验证密码短语。那么,如果我想从c#开始做这件事,我该怎么做呢?因为我不知道我该如何传递这个短语。这就是我的意思。

你可以试试:

    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)
        {
            sw.WriteLine("openssl genrsa -aes256 -out E:\\testing_folder\\test_file_com.key.pem 2048");
            sw.WriteLine("123456");
            sw.WriteLine("123456");
        }
    }

这些似乎是相关的:而且。会有用的。它使用同一进程执行多个命令行。使用(StreamWriter sw=cmd1.StandardInput){if(sw.BaseStream.CanWrite){sw.WriteLine(“openssl genrsa-aes256-out E:\\testing_folder\\urian_test_final4.com.key.pem 2048”);sw.WriteLine(“123456”);sw.WriteLine(“123456”);}}}但它不起作用,它只是创建了一个文件,而是一个空文件。@Paul-请在您的问题中添加其他信息,如非平凡代码。通过单击左下角靠近C#和命令提示符等标记的“编辑”来完成此操作。