1 votes

Utilisation des fichiers *.reg pour définir les variables d'environnement sous Windows

Je prépare un ensemble d'instructions pour automatiser l'installation d'une certaine application sur les ordinateurs de notre équipe et, dans le cadre de cette automatisation, je dois ajouter des variables d'environnement utilisateur et des variables d'environnement système. Nous utilisons les deux Windows XP y Windows 7

Je voulais le faire en utilisant un fichier *.reg qui ajoutera ces variables. J'ai donc plusieurs questions :

Ce qui suit est correct pour les variables d'environnement de l'utilisateur :

[HKEY_CURRENT_USER\Environment]
"TEST"="ABC"'

Ce qui suit est correct pour les variables d'environnement du système :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"TEST2"="XYZ"'

Quelle est la différence entre :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
et [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]

Je veux mettre à jour la variable d'environnement PATH, puis-je faire quelque chose comme :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"PATH"="C:\temp\;%PATH%"'

Merci.

3voto

Evan Anderson Points 140581

Vous avez fondamentalement raison en ce qui concerne les emplacements de l'utilisateur et de l'environnement de l'ordinateur. Si vous créez des valeurs de type REG_SZ, Windows refusera de "développer" les autres variables d'environnement que vous pourriez y référencer (par exemple, "FOO"="%OTHER_VAR%"). \bar comme REG_SZ créera une variable d'environnement FOO avec la chaîne littérale "%OTHER_VAR%". \bar "comme valeur). La création de valeurs de type REG_EXPAND entraîne l'expansion des variables par Windows. Il s'agit d'un comportement étrange car les types REG_EXPAND ne sont pas réellement "développés" par les API du registre.

"CurrentControlSet" est un lien symbolique vers l'instance ControlSetXXX utilisée. Si vous démarrez avec un profil matériel différent, vous obtiendrez un "CurrentControlSet" différent. Ce mécanisme peut être considéré comme similaire aux différents niveaux d'exécution dans un inittab si vous êtes familier avec SYSV *nix.

Pour démontrer que "CurrentControlSet" est réellement un lien symbolique, il suffit de créer une nouvelle clé sous "HKLM \System\CurrentControlSet et allez le chercher sous "...". \ControlSet001 ". Vous le trouverez là.

Enfin, ce que vous voulez faire avec l'ajout à la variable PATH ne fonctionnera pas. Vous ne pouvez pas avoir plusieurs valeurs de registre dans la même clé avec le même nom. Si vous créez une valeur nommée "PATH", il n'y aura pas de "%PATH%" pour le nouveau "PATH" à étendre. L'ajout au PATH est un réel défaut de la façon dont le chemin est stocké dans le registre. Vous allez devoir ajouter une chaîne à la valeur "PATH" et, si vous vous souciez de la désinstallation, vous devrez analyser la variable "PATH" pour la supprimer lorsque l'utilisateur désinstalle.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X