2016-05-18 3 views
3

я запускаю это приложение в командной строке и получить желаемые результатыProcess.Start с аргументами не работает

Helpdesk-02.exe /department it 

но мой C# код (ниже), как представляется, игнорировать аргумент, но запускает приложение без параметров командной строки

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = @"Y:\Helpdesk-02.exe"; 
psi.Arguments = @"/department it"; 
psi.UseShellExecute = true; 
Process.Start(psi).WaitForExit(); 
+0

Невозможно проверить это, так как у нас нет вашего исполняемого файла. Вы уверены, что вы получаете желаемые результаты, запуская их вручную? –

+0

Можете ли вы отладить «Helpdesk-02.exe», чтобы проверить, что аргументы: a) read и b) правильно проанализированы? – ChrisF

+0

Работает ли он, если вы используете метод 'Process.Start (String, String)' для передачи аргументов? –

ответ

0

документация ProcessStartInfo состояний:

пространства интерпретируются как разделитель между несколькими аргументами. A Единственный аргумент, который включает пробелы, должен быть окружен кавычками , но эти кавычки не переносятся в целевое приложение .

+1

Нет, это не оно. –

5

Символ @ - это специальная строка с кавычками, поэтому она ведет себя иначе, чем стандартная строка. По сути, происходит это процесс в настоящее время началось с того, что будет выглядеть следующим образом из командной строки:

> Helpdesk-02.exe "/department it" 

Или один аргумент. Удаление @ символ силы C# интерпретировать строку, как и ожидалось:

> Helpdesk-02.exe /department it 

Тонкий, но существенная разница.

Оператор @ был разработан, чтобы упростить работу с путями, которые имеют встроенные пространства, обратные косые черты и другие символы, которые должны быть экранированы в стандартных строках. По сути, он ускользает от вас. Эти два объявления эквивалентны:

string pathToExplorer = @"C:\Program Files\Internet Explorer\iexplore.exe"; 
string escaped = "\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""; 

Лучше всего использовать оператор @ при работе с путями к файлам, а также использовать обычный способ при работе с параметрами.

+1

Тонкий и неинтуитивно-очевидный. Хорошая работа. –

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