Используйте свойство ProcessStartInfo.WorkingDirectory, чтобы установить его перед запуском процесса. Если свойство не установлено, рабочий каталог по умолчанию -% SYSTEMROOT% \ system32.
Вы можете определить значение% SYSTEMROOT%, используя:
string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT");
Вот пример кода, который открывает Notepad.exe с рабочим каталогом% ProgramFiles%:
...
using System.Diagnostics;
...
ProcessStartInfo _processStartInfo = new ProcessStartInfo();
_processStartInfo.WorkingDirectory = @"%ProgramFiles%";
_processStartInfo.FileName = @"Notepad.exe";
_processStartInfo.Arguments = "test.txt";
_processStartInfo.CreateNoWindow = true;
Process myProcess = Process.Start(_processStartInfo);
Также существует переменная Environment, которая контролирует текущий рабочий каталог для вашего процесса, к которому вы можете получить доступ напрямую через свойство Environment.CurrentDirectory .
WorkingDirectoryбыть относительный путь, и если да, то что он относительно текущего файла или каталога текущего исполняемого файла? Мне не удается заставить мою программу найти исполняемый файл, который я пытаюсь запустить. Я установил рабочий каталог в каталог exe (относительно текущего файла и текущего exe), но он не может его найти.