Windows Confidential: Die verborgenen Variablen

Das Einbetten einer Umgebungsvariablen in eine andere ist einfach eine Sache des guten operationalen Timings.

Raymond Chen

Es gibt ein Dialogfeld versteckt tief in der Systemsteuerung aufgerufen Umgebungsvariablen. Um es zu finden, musst du in die Systemsteuerung Systemeigenschaften navigieren. Dann auf einem Bein stehen Sie, gehen Sie auf die Registerkarte Erweitert, und klicken Sie auf die Schaltfläche Umgebungsvariablen und dabei das Alphabet rückwärts.

OK, vielleicht ein paar dieser Schritte nicht wirklich notwendig. Klar, ist aber, dass es war nicht, für durchschnittliche Benutzer beabsichtigt können leicht finden Sie im Dialogfeld Umgebungsvariablen, viel weniger zu verstehen, was es tut.

Wenn das System eine Umgebung für einen neuen Benutzer erstellt wurde, konsultiert er die Einstellungen im Dialogfeld um zu bestimmen, welche Variablen, in die Umwelt und mit welchen Werten statt. Im Allgemeinen gilt, dass wenn Benutzer und System abschnittsweise eine Umgebungsvariable gesetzt ist, dann sie die Benutzerdefinition folgen.

Statt völlig ignoriert die Systemvariable, aber können das System helfen, die User-Variable definieren. Die Menschen wollen oft die Benutzer-Umgebungsvariable auf die Systemumgebungsvariable beruhen. Beispielsweise sollten sie den Benutzer-Pfad zum SYSTEMPFAD, plus einige zusätzliche Verzeichnisse bestehen.

So funktioniert der Umwelt-Bauprozess. Es verläuft in etwa vier Schritten:

  • Zunächst erstellt das System einige vordefinierte systemweiten Umgebungsvariablen wie System­Stamm und alle­Benutzer­Profil (aber nicht COMPUTER­NAME oder Programm­Dateien).
  • Zweitens wird aus dem System-Abschnitt des Dialogfeldes Umgebungsvariablen Umgebungsvariablen erstellt. Die Notation "%" können die System-Umwelt-Variablendefinitionen verweisen auf die vordefinierte Umgebungsvariablen, die in der vorherigen Schritt erstellt. Sie können beispielsweise eine Systemumgebungsvariable % System festlegen­Drive%\Extras. Nachdem die Systemumgebung abgeschlossen ist, startet Windows die Benutzerumgebung Gebäude.
  • Schritt drei ist pro Benutzer vordefinierte Umgebungsvariablen wie Benutzer erstellen­Profil und APP­Daten. Der COMPUTER­und­Dateien im Zusammenhang mit Variablen werden auch hier erstellt, obwohl sie technisch Systemvariablen und nicht pro Benutzer Variablen sind.
  • Schließlich erstellt das System die Umgebungsvariablen. Diese sind im Abschnitt Benutzer im Dialogfeld Umgebungsvariablen und haben Zugriff auf Variablen erstellt durch die ersten drei Schritte, so können Sie eine Benutzer-Umgebungsvariable % USER­PROFILE%\Extras oder eine benutzerdefinierte Systemumgebungsvariable festgelegt, im zweiten Schritt. Weist eine Benutzer-Umgebungsvariable auf den gleichen Namen wie eine Systemumgebungsvariable, ersetzt der neue Wert die alten.

Der Austausch geschieht, nachdem berechnet das System den neuen Wert, so dass Sie tun können, Dinge wie haben einer BENUTZERPFAD Umgebung definiert als %Path%;C:\Extras. Die PATH Variable bezieht sich auf die Systemversion der Variablen. Nun, da Sie sehen, was funktioniert, können Sie herausfinden, was nicht funktioniert. Es ist das Zeug, das im vorigen Abschnitt als arbeiten nicht beschrieben ist.

Beispielsweise können Sie überall % SystemRoot%. Alle System-Umgebungsvariable können Sie helfen, eine Umgebungsvariable Benutzer definieren. Eine vordefinierten benutzerspezifischen Umgebungsvariablen können Sie helfen, eine Umgebungsvariable Benutzer definieren. Jedoch nicht um zu helfen, eine Systemumgebungsvariable definieren eine benutzerspezifischen Umgebungsvariablen verwenden. Zeit gehen nicht rückwärts.

Ein Kunde hatte Schwierigkeiten beim Festlegen der Umgebungsvariablen PATH System auf %APPDATA%;C:\Windows. Sie fanden die endgültige Umwelt enthalten lediglich den literalen Pfad als angegeben (Prozentzeichen und alle), anstatt Sie zu ersetzen mit dem Wert der Umgebungsvariable APPDATA. Schaut man durch die Abfolge der zuvor aufgeführten Maßnahmen, ist es klar, warum dies geschah. Sie versuchten, legen Sie eine Systemumgebungsvariable basierend auf eine Variable, die noch nicht eingereicht worden waren.

Die Lösung war einfach: Verschieben Sie den Pfad aus dem System-Umwelt-Listenfeld in das Listenfeld Umgebung Benutzer bearbeiten. So, als es die Umgebungsvariable % APPDATA % verwenden wollte würde die Variable da sein.

Der Code, der die Benutzerumgebung erstellt, könnte versucht haben, eine Phantasie Abhängigkeitsdiagramm erstellen. Es könnte eine benutzerdefinierte Syntax hinzugefügt haben, die Variable-Definitionen zu erklären, ob ein bestimmtes Vorkommen %Path% gedacht war, sich auf der System- oder Version der PATH-Variablen zulässig. Dann könnte es all diese Informationen, baute ein Abhängigkeitsdiagramm zusammengestellt und sorgfältig definiert die Variablen in einer Reihenfolge, sodass jede Variable vor seinen Angehörigen definiert war. Dann müssten Sie entscheiden, was zu tun, wenn ein Zirkelbezug erkannt wurde.

Das Ziel der Umgebung ist nicht, eine Kalkulationstabelle Neuberechnung Engine zu emulieren. Es will nur einen Umgebungsblock aus einige grundlegende Informationen zu erstellen, und wählen einfache Regeln erleichtert den gesamten Prozess zu erklären und zu verstehen. Ist das so schwer zu verstehen?

Raymond Chen

Raymond Chender Web-Site, The Old New Thing, und identisch mit dem Titel Buch (Addison-Wesley, 2007) befassen sich mit der Geschichte von Windows und Win32-Programmierung. Er wird die Tiere außerhalb der ausgewiesenen Flächen nicht eingezogen.

Verwandte Inhalte