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

Mat*_*ttN 10 c# filenames environment-variables process.start

我正在尝试创建一个这样的过程:

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

var process = Process.Start(psi);
process.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

现在环境变量"red_root"肯定存在于生成进程的环境变量中,但是执行似乎没有扩展环境变量,因此找不到该文件.如何让Process.Start扩展文件名中的环境变量?

Ani*_*Ani 21

这个Environment.ExpandEnvironmentVariables方法应该有帮助.

将嵌入在指定字符串中的每个环境变量的名称替换为等效于变量值的字符串,然后返回结果字符串.

string unexpandedPath = "%red_root%\\bin\\texturepreviewer.exe";   
psi.FileName = Environment.ExpandEnvironmentVariables(unexpandedPath);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ius 6

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