Как обеспечить, чтобы С# 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 расширять переменную среды в имени файла?

Ответ 1

Метод Environment.ExpandEnvironmentVariables должен помочь здесь.

Заменяет имя каждой среды переменная, встроенная в указанный строка со строковым эквивалентом значение переменной, то возвращает результирующую строку.

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

Ответ 2

Вы пробовали System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)?