2016-06-01 12 views
-2

Wo kann ich die vollständige Liste der Variablen erhalten, durch die WinAPI-Funktion ersetzt?ExpandEnvironmentStringsForUser Variablenliste

MSDN enthält nur ein einziges Beispiel: %USERPROFILE%.

Ist diese Liste vollständig und korrekt? http://www.rapidee.com/en/environment-variables

+0

Die Liste kann vom Benutzer bearbeitet werden. Öffnen Sie eine DOS-Eingabeaufforderung, geben Sie 'set' ein und drücken Sie die Eingabetaste, um sie zu sehen. –

+2

Wenn Sie wissen müssen, machen Sie es falsch. Was versuchen Sie letztendlich zu erreichen? – IInspectable

+0

@Intspectable Ich arbeite an einem Autocomplete-System für einen speziellen Config-Editor. Es bietet Varianten an, während Sie% eingeben. Die Einträge in der Konfigurationsdatei sollten für die Erweiterung auf einem 'leeren' Windows-Rechner gültig sein. Die Tabelle, die ich gefunden habe, brachte mich auf die Idee, dem Administrator in einem Tooltip zu zeigen, welche Windows-Version für jede Variable benötigt wird und wie sie dort erweitert wird. – noober

Antwort

2

Rufen Sie GetEnvironmentStrings an, um die Umgebung für Ihren Prozess zu ermitteln, wenn Sie den Anruf tätigen. Sie müssen die doppelte nullterminierte Zeichenfolge analysieren, die zurückgegeben wird, um die Name/Wert-Paare zu finden.

Beachten Sie, dass es keine endgültige Liste von Umgebungsvariablen gibt. Jeder Prozess behält seine eigene private Umgebung bei. Die Umgebung wird beim Erstellen des Prozesses angegeben. Normalerweise erbt es von der Umgebung des übergeordneten Prozesses. Aber nicht immer. Es ist durchaus möglich und normal, dass der übergeordnete Prozess eine Umgebung für den untergeordneten Prozess angibt, die sich von der eigenen unterscheidet.

Beachten Sie auch, dass sich die Umgebung während der Lebensdauer des Prozesses ändern kann. Durch Aufrufe an SetEnvironmentVariable wird die Umgebung des aufrufenden Prozesses geändert.

Sie sollten jetzt ableiten können, dass die Liste der Variablen in Ihrem Link möglicherweise in einer Umgebung gefunden wird oder nicht. Eine Umgebung könnte alle diese Variablen oder keine davon enthalten. Es könnte Variablen enthalten, die in dieser Liste nicht gefunden werden. Es könnte überhaupt keine Variablen enthalten.

Weitere Informationen zu Umgebungsvariablen finden Sie hier: Environment Variables (MSDN).

+0

Leider arbeite ich gerade an dem Editor (siehe meine Antwort zu IInspectable), läuft unter LAMP und Windows-Aufrufe sind dort unmöglich. Ich sehe jetzt, ich sollte stattdessen fragen, was ist die Liste für die Erweiterung durch die Funktion auf einer Out-of-the-Box frischen Windows-Maschine. (Und vielleicht wird die Liste je nach Windows-Version leicht variieren). – noober

+1

Ihre Frage wurde mit winapi getaggt, was die Verwendung der Windows-API impliziert. Daher diese Antwort. –

+0

Es ist so getaggt, weil die Funktion, nach der ich gefragt habe, zu WinAPI gehört. Ich kann einfach nicht eine andere WinAPI-Funktion verwenden, um das erste Verhalten vorherzusagen. – noober