[visual basic] changement de variables d'environnement en broadcoast (pour tous processsus)

Contenu du snippet

Ce code permet de changer une ou plusieurs variable(s) d'environnement sous windows 2000 pour l'ensemble des applications d'un poste sans rebooter.

>> Il ne faut pas utiliser l'API : SetEnvironmentVariable, car celle-ci, ne fait que de changer la valeur de la ou des variable(s) d'environnement pour un 1 seul processus.<<

Le but de ce code est de changer la ou les variables d'environnement pour tous les processus de windows sans rebooter. Pour cela il faut modifier la base de registre au niveau de : "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" (sous Win2000) et par suite d'envoyer un message en BroadCoast à tout l'os pour lui spécifier le changement de variables.

On utilise l'api : Private Declare Function SendMessage Lib "user32"

Source / Exemple :


'API
Private Declare Function SendMessage Lib "user32" _
    Alias "SendMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As String) As Long
    
 'CONSTANTE   
Private Const WM_SETTINGCHANGE = &H1A
Private Const HWND_BROADCAST = &HFFFF&

Private Sub changement()
dim tmp as string

'Chaine du path
tmp = "SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\ESSBASE6\BIN;C:\ESSBASE6\API\Redist;c:\sys\ora8i\bin;c:\sys\orawinnt\bin;C:\Sys\Pcom\;C:\Program Files\IBM\Trace Facility\;C:\PROGRA~1\CONTINUUS\CCM51\BIN;C:\ARBORPATH\bin"

'Modifie la base de registre de windows (DonnerValeur est un fonction de modification de d'un clé de registre que vous pouvez retrouver ici )
Call DonnerValeur(0, "SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "ARBORPATH", "C:\ARBOR")
Call DonnerValeur(0, "SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "Path", tmp)

'Message en Broadcoast pour l'envoie du changement à tous les processus de windows concernant cette modification
Call SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Environment")

End Sub

Conclusion :


Remerciement aux personnes du forum qui m'on permis de m'aiguiller dans cette voie.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.