¿Cómo pasar múltiples argumentos en processStartInfo?

Quiero ejecutar algún comando cmd desde c# código c# . Seguí algunos blogs y tutoriales y obtuve la respuesta, pero estoy un poco confundido, es decir, ¿cómo debo pasar varios argumentos?

Yo uso el código de seguimiento:

 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 = ... 

¿Cuál será el valor startInfo.Arguments para el siguiente código de línea de comando?

  • 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

Es puramente una cadena:

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

Por supuesto, cuando los argumentos contengan espacios en blanco, tendrás que escapar usando \ “\”, como:

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

Ver MSDN para esto.

 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" 

use / c como argumento cmd para cerrar cmd.exe una vez que termine de procesar sus comandos

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

y…

 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\""; 

El /c le dice a cmd que se cierre una vez que el comando se haya completado. Todo después de /c es el comando que desea ejecutar (dentro de cmd ), incluidos todos los argumentos.

Para makecert, su startInfo.FileName debe ser la ruta completa de makecert (o simplemente makecert.exe si está en la ruta estándar), entonces los Arguments serían -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer ahora no estoy familiarizado con el funcionamiento de la tienda de certificados, pero tal vez necesite establecer startInfo.WorkingDirectory si está remitiendo los archivos .cer fuera del almacén de certificados