Je veux exécuter une commande cmd
à partir de c#
code. J'ai suivi quelques blogs et tutoriel et obtenu la réponse, mais je suis un peu confus, c'est-à-dire comment dois-je passer plusieurs arguments?
J'utilise le code de suivi:
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
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, vous devrez les échapper en utilisant\"\", comme:
"... -ss \"My MyAdHocTestCert.cer\""
Voir MSDN pour cela.
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 de vos commandes terminé
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
indique à cmd de quitter une fois la commande terminée. Tout après /c
est la commande que vous souhaitez exécuter (dans cmd
), y compris tous les arguments.
Pour makecert, votre startInfo.FileName
devrait être le chemin complet de makecert (ou juste makecert.exe s'il est dans le chemin standard) alors 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 connais pas très bien le fonctionnement du magasin de certificats, mais vous devrez peut-être définir startInfo.WorkingDirectory
si vous référez les fichiers .cer en dehors du magasin de certificats