Comment passer des arguments multiples dans processStartInfo?

je veux exécuter certains cmd commande c# code. J'ai suivi quelques blogs et tutoriel et j'ai eu la réponse, mais je suis un peu confus I. e Comment passer 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 = 
...

Ce sera 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

27
demandé sur Esko 2013-02-25 11:15:33

4 réponses

C'est purement une chaîne de caractères:

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, quand les arguments contiennent des espaces blancs, vous devrez les échapper en utilisant\"\", comme:

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

Voir MSDN pour cela.

38
répondu bash.d 2016-12-19 18:50:28
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"

utilisation /c comme un cmd argument pour fermer cmd.exe une fois son traitement terminé vos commandes

4
répondu Zaid Amir 2013-02-25 07:29:47
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\"";

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

1
répondu sparky68967 2013-02-25 07:32:49

pour makecert, votre startInfo.FileName doit être le chemin complet de makecert (ou juste makecert.exe si elle est dans le chemin standard) puis le Arguments-sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer maintenant je ne sais pas trop comment fonctionne le magasin de certificats, mais peut-être que vous aurez besoin de définir startInfo.WorkingDirectory si vous faites référence à l' .cer fichiers à l'extérieur du magasin de certificats

0
répondu Martheen 2013-02-25 07:28:02