Question Comment passer plusieurs arguments dans processStartInfo?


Je veux en courir cmd commande de c#code. J'ai suivi quelques blogs et tutoriels et j'ai eu la réponse, mais je suis un peu confus. Comment puis-je transmettre plusieurs arguments?

J'utilise le code suivant:

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

Quel sera le startInfo.Arguments valeur pour le code de ligne de commande suivant?

  • 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


26
2018-02-25 07:15


origine


Réponses:


C'est purement une chaîne:

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

Bien sûr, lorsque les arguments contiennent des espaces blancs, vous devrez leur échapper en utilisant \ "\", comme:

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

Voir MSDN pour ça.


37
2018-02-25 07:26



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"

utilisez / c comme argument cmd pour fermer cmd.exe une fois son traitement terminé,


4
2018-02-25 07:29



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

et...

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

le /c dit à cmd de quitter une fois la commande terminée. Tout après /c est la commande que vous voulez exécuter (dans cmd), y compris tous les arguments.


1
2018-02-25 07:32



Pour makecert, votre startInfo.FileName devrait être le chemin complet de makecert (ou juste makecert.exe si elle est dans le chemin standard), puis le Arguments serait -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer Maintenant, je ne suis pas familier avec le fonctionnement du magasin de certificats, mais vous devrez peut-être définir startInfo.WorkingDirectory si vous référencez les fichiers .cer en dehors du magasin de certificats


0
2018-02-25 07:28