Чем Process.Start отличается от Пуск> Выполнить?

1

Если я перейду в меню "Пуск"> "Выполнить" и введите

C:\folder\Program.exe A = 1

Моя программа работает.

Он также работает, если я создаю ярлык для.exe и редактирую Свойства, чтобы добавить A=1 в целевой путь.

Однако, если я попытаюсь запустить

var p = new Process();
p.StartInfo.FileName = @"C:\folder\Program.exe";
p.StartInfo.Arguments = "A=1"
p.Start();

или

Process.Start(@"C:\folder\Program.exe, "A=1");

это не так.

В чем разница между этими двумя вызовами и как я могу изменить свой кодовый вызов, поэтому он работает точно так же, как при вводе значения в "Пуск"> "Выполнить"?

Теги:
process

1 ответ

3
Лучший ответ

Повторная отправка комментария в качестве ответа (и перефразирования):

В отличие от оболочки explorer Start-> Run, которая автоматически устанавливает текущий рабочий каталог в ту же папку, где находится целевой исполняемый файл,.NET Process.Start этого не делает. Это часто случается, когда исполняемый файл пытается загрузить ресурсы по сравнению с текущей рабочей папкой и ожидает, что он будет таким же, где находится исполняемый файл (например, загружать файлы конфигурации, библиотеки DLL и библиотеки и т.д.), Что приводит к сбоям или другим сбоям.

Используйте StartInfo.WorkingDirectory чтобы указать рабочую папку, в которой находится исполняемый файл, и 9 из 10 раз, и все будет!

Yeap, я несколько раз наступал на этот грабли...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню