Определение рабочего каталога для выполнения программы (C #) - PullRequest
7 голосов
/ 16 июля 2011

В настоящее время я пытаюсь получить исполняемый файл из определенной папки.

Приведенный ниже код довольно странно вылетает из приложения:

Process p = new Process();
p.StartInfo.WorkingDirectory = "dump";
p.StartInfo.FileName = s;
p.Start();

Я отладил его, и он говорил, что не может найти файл для запуска, но файл / папка определенно существует, мой синтаксис плох?

Код ниже работает, но рабочий директрой не определен, поэтому он не может найти исполняемый файл

Process.Start(@"dump\", s);

Ответы [ 2 ]

13 голосов
/ 16 июля 2011

Заданный вами рабочий каталог ("dump") относится к текущему рабочему каталогу.Возможно, вы захотите проверить текущий рабочий каталог.

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

string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(exeDir);

Или, еще лучше,не используйте относительный путь, установите для p.StartInfo.WorkingDirectory абсолютный путь.

0 голосов
/ 16 июля 2011

Вы не можете запустить исполняемый файл из папки, если ее там нет. Вы должны скопировать свой исполняемый файл в эту папку, и только после этого вы можете запустить Process для этого исполняемого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...