2010-12-08 149 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)