Подтвердить что ты не робот

Как передать аргументы multiples в processStartInfo?

Я хочу запустить команду cmd из кода c#. Я следил за некоторыми блогами и учебником и получил ответ, но я немного путаюсь. I.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

4b9b3361

Ответ 1

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

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 для этого.

Ответ 2

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 после завершения обработки ваших команд

Ответ 3

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

Ответ 4

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), включая все аргументы.