Vie secrète de Windows : Les variables cachées

L'incorporation d'une variable d'environnement dans une autre est tout simplement une question de savoir choisir le bon moment opérationnel.

Raymond Chen

Il y a une boîte de dialogue cachée profondément dans le panneau de contrôle appelées Variables d'environnement. Pour le trouver, vous aurez besoin accéder au panneau de configuration propriétés système. Puis, debout sur un pied, accédez à l'onglet Avancé et cliquez sur le bouton Variables d'environnement tout en récitant l'alphabet en arrière.

OK, peut-être un couple de ces étapes ne sont réellement nécessaires. Ce qui est clair, cependant, est qu'il n'était pas destiné pour les utilisateurs moyens pouvoir facilement trouver la boîte de dialogue Variables d'environnement, encore moins de comprendre ce qu'il fait.

Lorsque le système crée un environnement pour un nouvel utilisateur, il consulte les paramètres établis dans la boîte de dialogue pour déterminer quelles variables de placer dans l'environnement et avec quelles valeurs. Le principe général est que si une variable d'environnement est définie dans les sections du système et l'utilisateur, puis il suivra la définition de l'utilisateur.

Au lieu de la variable système en ignorant complètement, cependant, le système pouvez l'utiliser pour aider à définir la variable utilisateur. Souvent, les gens veulent la variable d'environnement utilisateur doit reposer sur la variable d'environnement système. Par exemple, ils peuvent vouloir le chemin d'accès de l'utilisateur pour comprendre le chemin d'accès système, ainsi que quelques autres répertoires.

Voici comment fonctionne le processus de consolidation de l'environnement. Elle procède en à peu près quatre étapes :

  • Tout d'abord, le système crée certaines variables d'environnement de niveau de l'ordinateur prédéfinis, tels que système­racine et tous les­utilisateurs­profil (mais pas d'ordinateur­nom ou programme­fichiers).
  • En second lieu, il crée des variables d'environnement de la section du système de la boîte de dialogue Variables d'environnement. Les définitions des variables système environnement peuvent utiliser la notation « % » pour faire référence aux variables d'environnement prédéfinis créés à l'étape précédente. Par exemple, vous pouvez définir une variable d'environnement % système­Drive%\Extras. Une fois l'environnement du système terminée, Windows commence à construire l'environnement de l'utilisateur.
  • Troisième étape est pour créer des variables d'environnement comme utilisateur prédéfinie par l'utilisateur­profil et APP­données. L'ordinateur­nom et programme­variables liées aux fichiers sont également créés ici, même si elles sont techniquement des variables système et non les variables de chaque utilisateur.
  • Enfin, le système crée les variables d'environnement. Ceux-ci se trouvent dans la section utilisateur de la boîte de dialogue Variables d'environnement et ont accès à toutes les variables créées par les trois premières étapes, donc vous pouvez définir une variable d'environnement utilisateur à utilisateur de %­PROFILE%\Extras ou une variable d'environnement système personnalisée défini dans la deuxième étape. Si une variable d'environnement utilisateur porte le même nom qu'une variable d'environnement système, la nouvelle valeur remplace l'ancien.

Le remplacement se produit après que le système calcule la nouvelle valeur, alors vous pouvez faire des choses comme un environnement de chemin d'accès utilisateur défini comme %Path% ;C:\Extras. La variable %Path% se réfère à la version du système de la variable. Maintenant que vous voyez ce qui fonctionne, vous pouvez comprendre ce qui ne fonctionne pas. C'est la substance qui n'est pas décrit dans la section précédente comme travail.

Par exemple, vous pouvez utiliser n'importe où à % SystemRoot%. Vous pouvez utiliser n'importe quelle variable d'environnement système pour aider à définir une variable d'environnement utilisateur. Vous pouvez utiliser une variable d'environnement utilisateur prédéfini pour définir une variable d'environnement utilisateur. Mais vous ne pouvez pas utiliser une variable d'environnement utilisateur pour définir une variable d'environnement système. Temps ne va pas en arrière.

Un seul client éprouvait des difficultés affectant à la variable d'environnement système PATH % AppData% ;C:\Windows. Ils ont trouvé l'environnement final contenait simplement le chemin d'accès littéral comme indiqué (signes de pourcentage et tout), au lieu de la remplacer par la valeur de la variable d'environnement APPDATA. Si vous regardez à travers la séquence d'opérations détaillés précédemment, il est clair, pourquoi cela s'est produit. Ils ont essayé de définir une variable d'environnement système basée sur une variable qui n'a pas encore été définie.

La solution était simple : Déplacer le chemin d'accès dans la zone de liste d'environnement système dans la zone de liste utilisateur environnement d'édition. De cette façon, quand il a voulu utiliser la variable d'environnement % APPDATA %, la variable serait là.

Le code qui génère l'environnement utilisateur pourrait ont tenté de construire un graphique de dépendance fantaisie. Puis il aurait pu ajouter une syntaxe personnalisée permettant aux définitions des variables de déclarer si une occurrence particulière de %Path% devait se référer à la version de système ou utilisateur de la variable PATH. Puis il pourrait avoir recueilli toutes ces informations, construites un graphique de dépendance et soigneusement défini les variables dans l'ordre afin que chaque variable a été définie avant ses personnes à charge. Vous devrez ensuite décider quoi faire si une référence circulaire a été détectée.

L'objectif de l'environnement est ne pas d'imiter un moteur de recalcul de la feuille de calcul. Il veut juste créer un bloc d'environnement à partir des informations de base, et choisissant des règles simples, l'ensemble du processus plus facile à expliquer et à comprendre. Est-ce si difficile à comprendre ?

Raymond Chen

Raymond ChenWeb site, The Old New Thing et même intitulée livre (Addison-Wesley, 2007) traitent de l'histoire Windows et programmation Win32. Il ne pas nourrir les animaux à l'extérieur des zones désignées.

Contenu associé