2016-03-23 6 views
0

Если я запускаю следующую команду в командной строке, он работает:Аргументом для ProcessStartInfo потребностей цитаты, всегда ускользает

"C:\Program Files (x86)\AppFolder\do.exe" 

Если я пытаюсь запустить то же самое, как процесс:

 ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
     startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
     startInfo.FileName = "cmd.exe"; 
     startInfo.Arguments = @"/c ""C:\Program Files (x86)\AppFolder\do.exe"""; 

     using (Process process = Process.Start(startInfo)) 
     { 
      ... 
     } 

Он не работает. Если я посмотрю на startInfo.Arguments, он выглядит следующим образом:

/c \"C:\\Program Files (x86)\\AppFolder\\do.exe\" 

Что мне не хватает? Не можете ли вы передать аргументы с кавычками или пробелами? Я вижу много примеров, когда люди передают элементы с пробелами/кавычками в порядке, но следование им просто не работает. Это самый узкий пример, о котором я могу думать.

EDIT: Если я просто создать ярлык, так что я не использовать пробелы и кавычки, это работает:

startInfo.Arguments = @"/c D:\_test\Do.lnk"; 
+1

_It, похоже, не запускается. Как это не работает? Попробуйте удалить скрытый стиль окна и измените параметр '/ c' на опцию'/k'. Бьюсь об заклад, вы увидите сообщение об ошибке в окне консоли, которое теперь задерживается. –

ответ

1

Я не использую «@». Это правильная реализация:

startInfo.Arguments = "/c \"C:\\Program Files (x86)\\AppFolder\\do.exe\""; 
+0

''/c \ "C: \\ Program Files (x86) \\ AppFolder \\ do.exe \" "' - это точно такая же строка, как '@"/c "" C: \ Program Files (x86) \ AppFolder \ do.exe "" "'. Как вы избегаете обратных косых черт и кавычек, не имеет значения. –

 Смежные вопросы

  • Нет связанных вопросов^_^