Как передать несколько аргументов в processStartInfo?

Я хочу запустить команду 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

Это чисто строка:

 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" 

use / 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 вне хранилища сертификатов

Давайте будем гением компьютера.