"jpm.lib" <jpm.lib@orange.fr> a écrit dans le message de groupe de
discussion :
ODxz9qQmKHA.760@TK2MSFTNGP02.phx.gbl...
> Bonjour,
> Je ne sais pas ce qu'est une variable d'environnement et j'aimerais avoir
> des précisions ( je suis sous Windows Vista ).
Le principe des variables d'environnement se retrouve dans TOUS les systèmes
d'exploitation (DOS, Windows 16, 32 et 64 bits, Linux, UNIX, BeOS, ...)
Ce sont des variables dont le contenu (une chaine de caractères) est
accessible de n'importe où :
- fenêtre de commande (console)
- système d'exploitation (pour ses besoins internes)
- programme utilisateur (quelconque, écrit en C, Delphi, C#, ...)
- script (quelconque, écrit en VBS,
JS, Perl, Python, PHP,..)
Seule la syntaxe diffère légèrement.
Dans les OS d'origine Microsoft, depuis que MSDOS existe (1981), une
"variable d'environnement" est définie par un nom encadrée par le caractère
"%" (dans une fenêtre de commande)
Sous UNIX (et dérivés : Linux, FreeBSD, ..) le caractère est "$" au lieu de
"%" (et uniquement en tête du nom)
L'utilisation de ces variables permet de s'affranchir totalement (dans un
script p.ex., ...) des variantes entre machines et versions de système.
Sous Windows :
Les variables d'environnement "système" (communes à tous les comptes) sont
stockées dans la clef :
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Ainsi que, éventuellement, celles déclarées dans "Autoexec.bat" (si, si !!!)
C'est d'ailleurs le seul usage -facultatif - de autoexec.bat sous NT par
les commandes :
SET variable=contenu
....
et aussi
PATH .......
Les variables d'environnement "utilisateur" (propres à chaque compte) sont
stockées dans la clef :
HKCU\Environment
Exemples (variable %SYSTEMROOT%, qui donne le répertoire principal du
système)
Batch :
-------
echo %SYSTEMROOT%
En C :
------
char *windir;
windir = getenv( "SYSTEMROOT");
En Delphi :
----------
var windir : string;
windir:=GetEnvironmentVariable('SYSTEMROOT');
En VBS :
--------
Set shell = WScript.CreateObject("WScript.Shell")
windir=shell.ExpandEnvironmentStrings("%SYSTEMROOT %")
....
Les variables d'environnement sont crées :
- soit par l'utilisateur, que ce soit par programmation
ou tout simplement dans un batch ou dans une
ligne de commande avec la commande
SET nom-de-la-variable=valeur-de-la-variable
P.ex. (dans ton cas avec GIMP)
SET Lang=fr
- soit par le système.
Il existe donc des variables
prédéfinies, qui peuvent être
statiques ou dynamiques :
STATIQUES :
==========
%PATH%
liste des répertoires par défaut
%COMSPEC%
nom du processeur de commandes
%SYSTEMROOT%
nom du répertoire racine du système
%WINDIR%
identique à %SYTEMROOT%
(utilisé pour compatibilité avec Windows 9x/ME)
%USERNAME%
nom du compte utilisateur en cours
%COMPUTERNAME%
nom NetBIOS de l'ordinateur
%USERDOMAIN%
au choix :
- nom NetBIOS de l'ordinateur (workgroup)
- nom du domaine (domaine)
%SYSTEMDRIVE%
nom du disque contenant %SYSTEMROOT%
%HOMEDRIVE%
identique à %SYSTEMDRIVE%
%USERPROFILE%
le chemin complet du dossier de l'utilisateur en cours
%HOMEPATH%
identique à %USERPROFILE%
%ALLUSERPROFILE%
chemin complet du dossier commun à tous les utilisateurs
%PROGRAMFILES%
chemin par défaut des programmes
%PATHEXT%
liste des extensions de fichiers considérés comme exécutables
(= lancés simplement en tapant leur nom)
%TEMP%
chemin des fichiers temporaires
%TMP%
chemin des fichiers temporaires
(généralement identique à %TEMP%)
%PROCESSOR_IDENTIFIER%
description du microprocesseur utilisé
...
DYNAMIQUES :
===========
Ces variables DYNAMIQUES sont en réalité des fonctions,
dont le contenu est susceptible de varier :
%DATE%
date en cours
%TIME%
heure en cours
%CD%
répertoire en cours
%RANDOM%
nombre aléatoire compris entre 0 et 32767
%ERRORLEVEL%
code de retour de la dernière commande
%CMDEXTVERSION%
n° de version du processeur de commandes en cours
%CMDCMDLINE%
ligne de commande qui a appelé le processeur de commandes
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou
http://jc.bellamy.free.fr