Problème API et variable d'environnement

hecco Messages postés 4 Date d'inscription dimanche 25 novembre 2001 Statut Membre Dernière intervention 1 mars 2004 - 1 mars 2004 à 11:48
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 - 1 mars 2004 à 12:07
Bonjour,

J'ai un petit problème avec les variables d'environnements sous Win2000 et VB.

Je cherche à modifier une variable d'environnement au sein de windows.

J'utilise l'API :

Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long

qui modifie bien ma variable, cependant, cette modification n'est pas valable pour toutes les applications windows, comme le ferais le bouton OK dans la fenetre de propriété système la ou on modifie les variables d'environnenment.

Qqqun connaitrais la possibilité de changer la variable d'environnement tel que le fais le bouton OK de la propriété système de windows et ainsi modifier ces valeurs pour toutes les applications windows et de manière durable.

Cordialement

Hecco

2 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
1 mars 2004 à 11:59
Fonction sans effet sur les autres processus.

Pour que les autres soient affectes:
- Ecrire direct dans la bas de registres.
- Poster un message broadcast WM_SETTINGCHANGE.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
1 mars 2004 à 12:07
Salut ;O)

Attention, SetEnvironmentVariable n'est valable que pour le processus en cours. C'est à dire le programme qui lance la modification, suppression ou ajout de variables d'environnement.

Pour simple test :

'En en-tête
Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long

Dans Form_Load:

SetEnvironmentVariable "MaVariable", "Hello"
Shell "CMD.EXE"

Une console s'ouvre et tape SET. Tu verras dans la liste qui est par ordre alphabétique que MaVariable est bien là. Par contre, si tu lances une console via le menu Démarrer de Windows, puis Exécuter puis CMD, tu verras qu'en tapant SET, la variable MaVariable n'est pas présente car tu es dans un autre Processus.

Hélas, je ne connais pas la façon de modifier une variable de façon global... Si j'ai une info, je te l'as communique.

Guy
0