c#
codeからcmd
コマンドを実行したい。私はいくつかのブログとチュートリアルに従って回答を得ましたが、少し混乱しています。つまり、複数の引数をどのように渡す必要がありますか?
私は次のコードを使用します:
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
それは純粋に文字列です:
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 [〜#〜] をご覧ください。
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を閉じます。
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
内で)実行するコマンドです。
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ファイルを参照している場合