37

コードcmdからいくつかのコマンドを実行したい。c#いくつかのブログとチュートリアルをたどって答えを得ましたが、少し混乱しています。つまり、複数の引数をどのように渡す必要がありますか?

私は次のコードを使用します:

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

4

6 に答える 6

52

それは純粋に文字列です:

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を参照してください。

于 2013-02-25T07:26:52.290 に答える
4
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を閉じます

于 2013-02-25T07:29:47.743 に答える
2
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

于 2013-02-25T07:32:49.420 に答える
0

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証明書ストアの動作に少し慣れなくなりますが、次startInfo.WorkingDirectoryの場合は設定する必要があります。証明書ストア外の.cerファイルを再参照する

于 2013-02-25T07:28:02.003 に答える