2017-06-08 13 views
-1

Ich habe eine benutzerdefinierte Umgebungsvariable hinzugefügt und kann sie nicht in ExpandEnvironmentVariables zurückgeben.Wie erhält man ExpandEnvironmentVariables, um benutzerdefinierte Variablen zurückzugeben?

Diese 2 Anrufe funktionieren:

string s = Environment.GetEnvironmentVariable("TEST", EnvironmentVariableTarget.Machine); 

// s = "D: \ Temp2"

string path = Environment.ExpandEnvironmentVariables(@"%windir%\Temp1"); 

// path = "C: \ Windows \ Temp1"

Dieser Aufruf gibt jedoch dieselbe Eingabezeichenfolge zurück:

var path = Environment.ExpandEnvironmentVariables(@"%TEST%\Temp1"); 

// path = "%TEST%\\Temp1" 

Ich erwarte, dass D zu erhalten: \ Temp2 \ Temp1

Was bin ich richtig die benutzerdefinierte EnvironmentVariable in diesem letzten Anruf zu erhalten? Envionmental Variables

+0

Setzen Sie die Variable im Code? Wenn ja, kannst du deine Frage so bearbeiten, dass sie den Code enthält? – stuartd

+2

Der offensichtlichste Grund ist, dass Sie diese Variable der Systemumgebung hinzugefügt haben, ohne dass Sie VS oder Ihr Programm neu starten müssen. Sei 100%, dass die Änderungen wirksam sind, indem du dich abmeldest und wieder einloggst. –

+0

Um die Systemvariablen zu setzen, verwende ich einfach die System-Eigenschaften des OS-Interface. Ich lese nur die Variable im Code. GetEnvironmentVariable funktioniert, aber ExpandEnvironmentVariables tut nicht ... –

Antwort

0

Hans und Evk waren in ihren Kommentaren richtig. Da niemand eine Antwort hinzufügen wollte, schließe ich diese Frage.

Aus welchem ​​Grund ExpandEnvironmentVariables keine Schlüssel erhalten, die nach dem Start einer Anwendung hinzugefügt wurden. Ich habe das auch mit einem laufenden Windows Service getestet. Erst nachdem ich den Dienst neu gestartet habe, wurden neue Schlüssel gefunden und aufgefüllt.

Dieses Verhalten ist nicht in der Microsoft-Dokumentation dokumentiert.

Verwandte Themen