Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[DOTNET] CHANGEMENT DE VARIABLES D'ENVIRONNEMENT EN BROADCOAST (POUR TOUS PROCESSSUS)


Information sur la source

Catégorie :API Source .NET ( DotNet ) Classé sous : variable, environnement, broadcast, sendmessage Niveau : Débutant Date de création : 10/05/2006 Date de mise à jour : 31/05/2009 18:32:08 Vu : 8 059

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

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", cependant sous dotnet l'utilisation des bibliothèques statiques de windows doivent être appeler et Marshaliser.
 

Source

  • Imports System.Runtime.InteropServices
  • Imports System.Text
  • Public Class ImportsApi
  • Public Const WM_SETTINGCHANGE = 26
  • Public Const HWND_BROADCAST = 65535
  • '--This function sends the specified message to a window or windows--
  • Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  • (ByVal hwnd As Integer, ByVal Msg As Integer, _
  • ByVal wParam As Integer, _
  • <MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer
  • Private Declare Function RegisterWindowMessage Lib "user32"
  • Alias "RegisterWindowMessageA" (ByVal lpString As String) As Integer
  • Public Function changement() As Boolean
  • 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
  • Dim nMsg As UInteger = RegisterWindowMessage("WM_SETTINGCHANGE")
  • Call SendMessage(HWND_BROADCAST, nMsg, 0, "Environment")
  • End Function
  • End Class
Imports System.Runtime.InteropServices
Imports System.Text
Public Class ImportsApi
    Public Const WM_SETTINGCHANGE = 26
    Public Const HWND_BROADCAST = 65535

    '--This function sends the specified message to a window or windows--
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
       (ByVal hwnd As Integer, ByVal Msg As Integer, _
        ByVal wParam As Integer, _
       <MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer
    Private Declare Function RegisterWindowMessage Lib "user32" 
       Alias "RegisterWindowMessageA" (ByVal lpString As String) As Integer

    Public Function changement() As Boolean
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 
Dim nMsg As UInteger = RegisterWindowMessage("WM_SETTINGCHANGE")
Call SendMessage(HWND_BROADCAST, nMsg, 0, "Environment")
  
  
    End Function

End Class 

Historique

31 mai 2009 18:32:08 :
Le 31/05/2009 Avec l'arrivé ce VISTA, ce code doit être amendé avec les nouveaux éléments sur MSDN : http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx En effet il faut ajouter un RegisterWindowMessage avec de lancer le broadcast.

Commentaires et avis

signaler à un administrateur
Commentaire de olixelle le 10/05/2006 17:34:36

Salut,

a mon avis tu te compliques considérablement la vie.
Il y a un objet dans le framework qui te permet de gérer directement les var d'environnement...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Dedans SVP [ par Goustaf ] Je désire accéder aux variables d'environnement. j'ai vu qu'il existe la commande ENVIRON(idx) qui me renvoie la valeur de ma variable d'environnement Addin - variable d'environnement - type de de variable [ par wardall ] Bonjour,J'ai fait un "Addin" pour VB et je cherche à récupérer les types de variables d'environnement possibles pour une declaration de variable.C'est environnement windows [ par poulipe ] Bonjour,je voudrais que mon application, demarre en lisant une variable d'environnement, set monappli= c:\monapplipar exemple, et lire un fichier ini Changer le chemin d'une variable d'environnement [ par PeTeRsLaStAr ] BonjourLors de la création d'une variable d'environnement (dans la base de registre donc), je souhaiterais savoir s'il y a moyen de lui indiquer dans Modification de variables d'environnement Globale [ par Hecco ] Bonjour à toutes et à tous,Je recherche une information sur la mise à jour de variables d'environnement au sein de windows 2000, un peu la mm manière lecture variable d'environnement [ par vbusinor ] comment faire pour récupérer ou écrire dans une variable d'environnement?Merci d'avance variable en vbscript [ par ] Bonjour,Petite question:je voudrais lire un fichier texte du style:#Variable 1var1=v1var2=v2et mettre dans des variables vbs les noms de ces variable variable environnement [ par hujikole2 ] Bonjour,Voila je cherche a recuperer le numero du pc, mais je ne sais pas comment faire.Pour le nom de l'utilisateur , je fais:l_user = UCase(Environ( Variable d'environnement SetEnvironmentVariable [ par kligeo ] La commande SetEnvironmentVariable ne fonctionne pas sur mon PC, aucune variable n'est modifié ou crée (LA commande Get ne fonctionne pas non plus). P variable d'environnement [ par gp91 ] je vais installer une application sur un cd rom qui va copier des fichers d'exerces sur le bureau de l'ordinateur, j'ai la solution pour trouver le ch


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.