Как передать несколько аргументов в processStartInfo?
Я хочу запустить некоторые с c#
код. Я следил за некоторыми блогами и учебником и получил ответ, но я немного смущен.e как передать несколько аргументов?
Я использую следующий код:
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 ответов
Это чисто строка:
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 вне хранилища сертификатов