如何传递多个参数中的ProcessStartInfo?(How to pass multiple a

2019-07-20 11:48发布

我想运行一些cmd从命令c#代码。 我跟着一些博客和教程,并得到了答案,但我在有点困惑,即我应该如何传递多个参数?

我使用如下代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = 
...

什么将成为startInfo.Arguments以下命令行代码的价值?

  • makecert -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer

  • netsh http add sslcert ipport=127.0.0.1:8085 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable

Answer 1:

这纯粹是一个字符串:

startInfo.Arguments = "-sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer"

当然,当参数包含空格,您必须使用\“\”,喜欢逃避它们:

"... -ss \"My MyAdHocTestCert.cer\""

请参阅MSDN此。



Answer 2:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer"

使用/ C作为cmd参数关闭CMD.EXE一旦其处理完你的命令



Answer 3:

startInfo.Arguments = "/c \"netsh http add sslcert ipport=127.0.0.1:8085 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable\"";

和...

startInfo.Arguments = "/c \"makecert -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer\"";

/c告诉cmd以退出一旦命令完成。 之后的一切/c是你要运行(在命令cmd ),包括所有的参数。



Answer 4:

对于makecert,你startInfo.FileName应该是makecert的完整路径(或只是makecert.exe如果它在标准路径),则该Arguments-sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer现在我有证书存储的工作原理有点陌生,但也许你需要设置startInfo.WorkingDirectory如果你指的证书存储区外的.CER文件



文章来源: How to pass multiple arguments in processStartInfo?