.NET Process.Start каталог по умолчанию?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
119
0
89 805
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

...
using System.Diagnostics;
...

var startInfo = new ProcessStartInfo();

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

Process proc = Process.Start(startInfo);

Может ли WorkingDirectory быть относительным путем, и если да, то по отношению к текущему файлу или каталогу текущего исполняемого файла? Мне не удается заставить мою программу найти исполняемый файл, который я пытаюсь запустить. Я установил рабочий каталог в каталог exe (относительно текущего файла и текущего exe), но он не может его найти.

pushkin 13.02.2018 00:31

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

Документы здесь.

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

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

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

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

Brain2000 13.09.2011 18:39

Бинго, вот и ответ - каталог по умолчанию - SYSTEMROOT. +1

ashes999 12.10.2011 18:05

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

Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением - вы всегда можете комментировать свои собственные сообщения, и как только у вас будет достаточно репутация, вы сможете комментировать любой пост.

Cyclonecode 05.04.2014 00:26

Даже 6 лет спустя этот комментарий об UseShellExecute оказался полезным. Исправлена ​​проблема.

AlanC 25.05.2020 01:26

Другие вопросы по теме