2010-12-08 16 views
10

mam próby utworzenia procesu tak:Jak zapewnić C# procesowi.Start rozszerzy zmienne środowiskowe?

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

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

Teraz zmienna „red_root” zdecydowanie istnieje w zrodził proces zmiennych środowiskowych, ale wykonanie nie wydaje się, aby rozwinąć i zmienną środowiskową więc plik nie zostanie znaleziony. Jak mogę uzyskać Process.Start, aby rozwinąć zmienną środowiskową w nazwie pliku?

Odpowiedz

20

Pomoże tutaj metoda Environment.ExpandEnvironmentVariables.

Zastępuje Nazwa każdego środowiska zmiennym osadzony w określonym łańcucha z odpowiednimi string wartość zmiennej, a następnie zwraca łańcuch.

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

Wygląda na to metoda ta jest już od .NET 1.1, więc jest to dość bezpieczne w użyciu w dzisiejszych czasach. –

6

Czy próbowałeś już System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)?