如何在processStartInfo中传递多个参数?

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

我使用以下代码:

 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

它纯粹是一个字符串:

 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 。

 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

 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内),包括所有参数。

对于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现在我对证书存储的工作原理有点不熟悉,但如果你在证书库外引用.cer文件,你可能需要设置startInfo.WorkingDirectory