C# 从c执行多个命令提示符命令#
我正在尝试从c#使用OpenSSL生成私钥。为了做到这一点,我尝试重定向流程标准输入,但仍然存在一些问题。 我提到我想在私钥上使用aes256加密,为了实现这一点,它需要密码,所以,我的问题是我不知道如何将密码传输到进程,我的意思是我创建了进程,我使用OpenSSL和aes256加密运行创建密钥的命令,并且必须输入密码和确认密码 这是我的代码: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
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#和命令提示符等标记的“编辑”来完成此操作。