[c#] .NET Process.Start 기본 디렉토리?
C # .NET 콘솔 응용 프로그램 내부에서 Java 응용 프로그램을 시작하고 있습니다 . Java 애플리케이션이 “기본”디렉토리가 무엇인지 신경 쓰지 않는 경우에는 잘 작동하지만 현재 디렉토리에서만 지원 파일을 검색하는 Java 애플리케이션에서는 실패합니다.
프로세스가 시작되는 기본 디렉토리를 지정하도록 설정할 수있는 프로세스 매개 변수가 있습니까?
답변
예! ProcessStartInfo WorkingDirectory 라는 속성이 있으며 다음을 사용하십시오.
...
using System.Diagnostics;
...
var startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory = // working directory
// set additional properties
Process proc = Process.Start(startInfo);
답변
프로세스를 시작하기 전에 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 속성을 통해 직접 액세스 할 수있는 프로세스의 현재 작업 디렉터리를 제어하는 환경 변수도 있습니다.
답변
이것을 구현하려고 내 머리를 치고 나서 메모. “UseShellExecute”를 false로 설정 한 경우 WorkingDirectory 값 설정이 작동하지 않습니다.