2010-12-08 31 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方法應該在這裏幫助。

替換每個環境嵌入在指定 串與串等效的 的變量的值的 變量,然後 返回結果字符串的名稱。

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

貌似因爲.NET 1.1這種方法已經問世所以它是很安全的時下使用。 – 2015-04-26 20:07:18

6

你試過System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)