2010-12-08 4 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, так что это довольно безопасно использовать в настоящее время. –

6

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

Смежные вопросы