Використовуйте властивість 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.CurrentDirectory .
WorkingDirectoryбути відносний шлях, і якщо так, то яке відношення до поточного файлу чи каталогу поточного виконуваного файлу? У мене виникають проблеми з отриманням програми, щоб знайти виконуваний файл, який я намагаюся запустити. Я встановив робочий каталог в каталог EXE (щодо поточного файлу та до поточного exe), але він не може його знайти.