web-dev-qa-db-fra.com

Comment répertorier les variables d'environnement globales séparément des variables d'environnement spécifiques à l'utilisateur?

Sous Windows (par exemple, la version 10), vous pouvez répertorier les variables d’environnement à l’aide de la commande

set

Comment répertoriez-vous uniquement les variables d'environnement identiques pour tous les utilisateurs ou uniquement les variables d'environnement destinées à l'utilisateur ou à la session en cours?

11
RedGrittyBrick

Les choses sont un peu plus compliquées que Microsoft ne le laisse parfois paraître.

Un grand nombre de variables d'environnement sont stockées dans le registre. Cela signifie que vous pouvez les interroger à l'aide de la commande reg

Commun à tous les utilisateurs

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

Spécifique à la session utilisateur en cours

reg query HKCU\Environment
reg query "HKCU\Volatile Environment"

Défini par l'utilisateur

Si vous définissez de manière permanente votre propre variable d'environnement à l'aide de la commande setx variable value, celle-ci est stockée dans le registre mais n'est pas immédiatement disponible.

C:\>setx test removeme

SUCCESS: Specified value was saved.

C:\>reg query "HKCU\Environment"

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    test    REG_SZ    removeme

Si vous utilisez la commande set variable=value, la variable est disponible immédiatement mais n'est pas stockée dans le registre. Vous ne pouvez pas utiliser la commande reg pour les lister bien qu'ils soient affichés par set. Ces variables d'environnement temporaires ne persistent pas après la fin de la session d'invite de commande.

Variables d'environnement dynamiques

Certaines constructions agissent comme des variables d'environnement qui ne sont pas stockées dans le registre de cette manière. Par exemple:

echo %TIME%
13
RedGrittyBrick

Pour une sortie propre sans lignes supplémentaires ni espaces noirs, utilisez les commandes suivantes dans cmd.exe:

Variables d'environnement utilisateur:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I

Variables d'environnement globales (système):

FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I

Cela fonctionne sous Windows 7-10, et très probablement aussi dans les versions précédentes.

1
maoizm