Comment forcer la mise à jour des variables d'environnement Windows

Le
Erika
Bonjour,

Je cherche, à créer (via PERL), puis à exploiter (via n'importe quelle
application Windows), dans une même session Windows (XP/2K), une variable
d'environnement utilisateur.

Pour ce faire, je n'utilise pas $ENV (qui semble n'être que les variables
d'environnement du script PERL), mais j'écris directement ma nouvelle
variable en base de registre (HKCU\Environment).

Celle-ci est effectivement bien créée, mais elle n'est pas disponible
dans la session Windows courante (par contre, elle l'est après avoir
fermé puis réouvert sa session).

Existe-t-il un moyen de forcer Windows à mettre à jour cette variable
d'environnement nouvellement créée (ou modifiée), afin qu'elle soit
immédiatement disponible pour toute application qui en aurait besoin,
SANS FERMER sa session ???

Merci par avance,

Erika
Vos réponses
Trier par : date / pertinence
jl_morel
Le #130271
Dans l'article a dit...

Je cherche, à créer (via PERL), puis à exploiter (via n'importe quelle
application Windows), dans une même session Windows (XP/2K), une variable
d'environnement utilisateur.

Pour ce faire, je n'utilise pas $ENV (qui semble n'être que les variables
d'environnement du script PERL), mais j'écris directement ma nouvelle
variable en base de registre (HKCU\Environment).

Celle-ci est effectivement bien créée, mais elle n'est pas disponible
dans la session Windows courante (par contre, elle l'est après avoir
fermé puis réouvert sa session).

Existe-t-il un moyen de forcer Windows à mettre à jour cette variable
d'environnement nouvellement créée (ou modifiée), afin qu'elle soit
immédiatement disponible pour toute application qui en aurait besoin,
SANS FERMER sa session ???



Il faut prévenir le système que l'environnement a changé en envoyant le
message WM_SETTINGCHANGE à toutes les applications.
Voir Microsoft KB :

http://support.microsoft.com/kb/104011/en-us

Le plus simple pour modifier/créer une variable d'environnement avec Perl
est d'utiliser la fonction SetEnvVar du module Win32::AdminMisc (il fait
automatiquement la mise à jour du système) :

http://www.roth.net/perl/adminmisc/#SetEnvVar

Le module s'installe avec ppm :

ppm install http://www.roth.net/perl/packages/Win32-AdminMisc.ppd

--
J-L.M.
http://www.bribes.org/perl

Publicité
Poster une réponse
Anonyme