Каталог .NET по умолчанию.

Я запускаю приложение Java изнутри консольного приложения С# .NET. Он отлично подходит для случая, когда Java-приложение не заботится о том, что такое "каталог по умолчанию", но не удается для приложения Java, которое ищет только текущий каталог для файлов поддержки.

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

Ответ 1

Да! ProcessStartInfo Имеет свойство, называемое WorkDirectory, просто используйте:

...
using System.Diagnostics;
...

var startInfo = new ProcessStartInfo();

  startInfo.WorkingDirectory = // working directory
  // set additional properties 

Process proc = Process.Start(startInfo);

Ответ 2

Используйте 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.

Ответ 3

Используйте свойство ProcessStartInfo.WorkingDirectory.

Docs здесь.

Ответ 4

Просто заметьте, когда я ударился головой, пытаясь реализовать это. Установка значения WorkDirectory не работает, если для параметра UseShellExecute установлено значение false.

Ответ 5

Метод Process.Start имеет перегрузку, которая принимает экземпляр ProcessStartInfo. Этот класс имеет свойство "WorkDirectory".

Установите это свойство в папку, которую вы хотите использовать, и чтобы она запустилась в правильной папке.

Ответ 6

Используйте класс ProcessStartInfo и присвойте значение свойству WorkingDirectory.