2010-12-08 2 views
10

내가 이렇게 같은 과정을 만들려고 해요 :C#의 Process.Start가 환경 변수를 확장하도록하려면 어떻게해야합니까?

var psi = new ProcessStartInfo 
{ 
    FileName = @"%red_root%\bin\texturepreviewer.exe", 
    UseShellExecute = true 
}; 

var process = Process.Start(psi); 
process.WaitForExit(); 

지금 환경 변수 "red_root는"확실히 생성 된 프로세스 '환경 변수에 존재하지만 환경 변수를 확장하지 않는 것 실행하고 그래서 파일을 찾을 수 없습니다. Process.Start를 가져 와서 파일 이름에 환경 변수를 확장 할 수 있습니까?

답변

20

여기에서 Environment.ExpandEnvironmentVariables 메서드가 도움이됩니다.

는 변수 값의 문자열 동등한 지정된 문자열에 포함 변수는 다음 의 결과 스트링을 리턴 각 환경의 이름을 대체. 이 방법은 .NET 1.1 이후 주변왔다처럼

string unexpandedPath = "%red_root%\\bin\\texturepreviewer.exe"; 
psi.FileName = Environment.ExpandEnvironmentVariables(unexpandedPath); 
+1

은 그래서 요즘 사용하는 것이 매우 안전 본다. –

6

System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)을 사용해 보셨습니까?