Как я могу убедиться, что C # Process.Start будет расширять переменные среды - PullRequest
10 голосов
/ 08 декабря 2010

Я пытаюсь создать процесс так:

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

var process = Process.Start(psi);
process.WaitForExit();

Теперь переменная окружения "red_root" определенно существует в переменных окружения порожденного процесса, но, похоже, команда execute не раскрывает переменную окружения, и поэтому файл не найден. Как получить Process.Start для расширения переменной среды в имени файла?

Ответы [ 2 ]

21 голосов
/ 08 декабря 2010

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

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

string unexpandedPath = "%red_root%\\bin\\texturepreviewer.exe";   
psi.FileName = Environment.ExpandEnvironmentVariables(unexpandedPath);
6 голосов
/ 08 декабря 2010

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

...