我如何确保C#的Process.Start将扩展环境变量?

时间:2010-12-08 14:35:48

标签: c# environment-variables filenames 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在文件名中扩展环境变量?

2 个答案:

答案 0 :(得分:21)

Environment.ExpandEnvironmentVariables方法应该有帮助。

  

替换每个环境的名称   变量嵌入指定的   字符串,其字符串相当于   那么变量的值   返回结果字符串。

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

答案 1 :(得分:6)

你试过System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)吗?