2010-12-08 44 views
10

je tente de créer un processus comme ceci:Comment puis-je m'assurer que Process.Start de C# étendra les variables d'environnement?

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

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

maintenant la variable d'environnement « red_root » existe certainement dans le processus donné naissance à variables d'environnement, mais Execute ne semble pas étendre la variable d'environnement et donc le fichier n'est pas trouvé. Comment puis-je obtenir le Process.Start pour développer la variable d'environnement dans le nom de fichier?

Répondre

20

La méthode Environment.ExpandEnvironmentVariables devrait aider ici.

remplace le nom de chaque environnement variable incorporée dans la chaîne spécifié avec l'équivalent de chaîne de la valeur de la variable, puis renvoie la chaîne résultante.

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

On dirait que cette méthode a été autour depuis .NET 1.1 il est assez sûr d'utiliser de nos jours. –

6

Avez-vous essayé System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)?