.NET Process.Start 기본 디렉토리?


114

C # .NET 콘솔 응용 프로그램 내부에서 Java 응용 프로그램을 시작하고 있습니다 . Java 애플리케이션이 "기본"디렉토리가 무엇인지 신경 쓰지 않는 경우에는 잘 작동하지만 현재 디렉토리에서만 지원 파일을 검색하는 Java 애플리케이션에서는 실패합니다.

프로세스가 시작되는 기본 디렉토리를 지정하도록 설정할 수있는 프로세스 매개 변수가 있습니까?

답변:


183

예! ProcessStartInfo WorkingDirectory 라는 속성이 있으며 다음을 사용하십시오.

...
using System.Diagnostics;
...

var startInfo = new ProcessStartInfo();

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

Process proc = Process.Start(startInfo);

WorkingDirectory은 상대 경로 가 될 수 있으며 , 그렇다면 현재 파일이나 현재 실행 파일의 디렉토리와 관련이 있습니까? 프로그램에서 시작하려는 실행 파일을 찾는 데 문제가 있습니다. 작업 디렉터리를 exe의 디렉터리 (현재 파일 및 현재 exe에 상대적)로 설정했지만 찾을 수 없습니다.
푸쉬킨

56

프로세스를 시작하기 전에 ProcessStartInfo.WorkingDirectory 속성을 사용하여 설정합니다. 속성이 설정되지 않은 경우 기본 작업 디렉터리는 % SYSTEMROOT % \ system32입니다.

다음을 사용하여 % SYSTEMROOT %의 값을 확인할 수 있습니다.

string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT");  

다음은 % ProgramFiles %의 작업 디렉터리로 Notepad.exe를 여는 샘플 코드입니다.

...
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 2011-09-13

1
빙고, 그게 답입니다. 기본 디렉토리는 SYSTEMROOT입니다. +1
ashes999

17

이것을 구현하려고 내 머리를 치고 나서 메모. "UseShellExecute"를 false로 설정 한 경우 WorkingDirectory 값 설정이 작동하지 않습니다.


1
이것은 질문에 대한 답을 제공하지 않습니다. 작성자에게 비판이나 설명을 요청하려면 게시물 아래에 댓글을 남겨주세요. 언제든지 자신의 게시물에 댓글을 달 수 있으며, 충분한 평판얻으면 모든 게시물댓글 수 있습니다 .
Cyclonecode 2014

1
6 년 후에도 UseShellExecute에 대한이 의견이 도움이되었습니다. 문제를 해결했습니다.
AlanC


6

Process.Start 메서드에는 ProcessStartInfo의 인스턴스를 사용하는 오버로드가 있습니다. 이 클래스에는 "WorkingDirectory"라는 속성이 있습니다.

해당 속성을 사용하려는 폴더로 설정하면 올바른 폴더에서 시작됩니다.


4

ProcessStartInfo클래스를 사용하고 WorkingDirectory속성에 값을 할당 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.