Comment crée, utiliser, supprimer une variable environnement
Comment crée, utiliser, supprimer une variable environnement
Salut,
Comment crée, utiliser, supprimer une variable environnement avec PB ?
Comment crée, utiliser, supprimer une variable environnement avec PB ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment crée, utiliser, supprimer une variable environne
SetEnvironmentVariable(Name$, Value$)
GetEnvironmentVariable(Name$)
RemoveEnvironmentVariable(Name$)
GetEnvironmentVariable(Name$)
RemoveEnvironmentVariable(Name$)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment crée, utiliser, supprimer une variable environne
Ah ya ça dans PB
Merci Falsam

Merci Falsam

Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment crée, utiliser, supprimer une variable environne
Petit problème
Je voudrais créer une variable environnement persistante, qui ne s’efface
pas à la fin du programme, or là, c'est le cas
Comment je peux faire ça ?

Je voudrais créer une variable environnement persistante, qui ne s’efface
pas à la fin du programme, or là, c'est le cas

Comment je peux faire ça ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment crée, utiliser, supprimer une variable environne
Les variables environnement de chaque utilisateurs sont inscrites dans la branche [HKEY_CURRENT_USER\Environment]
Exemple avec mon compte admin (admin est mon nom d'utilisateur)
Il doit falloir inscrire les variables dans le registre pour qu'elles soient permanentes.
Par contre, je ne sais pas si elles sont prises en compte immédiatement.
A tester.
Pour les variables globales, elles sont inscrites dans la branche
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Exemple:
A manipuler avec précaution.
Gérard
Exemple avec mon compte admin (admin est mon nom d'utilisateur)
Code : Tout sélectionner
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Environment]
"Path"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,\
6f,00,63,00,61,00,6c,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,\
73,00,3b,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,\
00,46,00,69,00,6c,00,65,00,73,00,5c,00,42,00,61,00,6e,00,64,00,69,00,7a,00,\
69,00,70,00,5c,00,37,00,7a,00,3b,00,59,00,3a,00,5c,00,44,00,4f,00,53,00,3b,\
00,59,00,3a,00,5c,00,57,00,49,00,4e,00,3b,00,43,00,3a,00,5c,00,50,00,72,00,\
6f,00,67,00,72,00,61,00,6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,20,00,28,\
00,78,00,38,00,36,00,29,00,5c,00,4a,00,61,00,76,00,61,00,5c,00,6a,00,72,00,\
65,00,31,00,2e,00,38,00,2e,00,30,00,5f,00,31,00,30,00,31,00,5c,00,62,00,69,\
00,6e,00,61,00,69,00,72,00,65,00,00,00
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,\
6f,00,63,00,61,00,6c,00,5c,00,54,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,\
45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,6f,\
00,63,00,61,00,6c,00,5c,00,54,00,65,00,6d,00,70,00,00,00
"OneDrive"="C:\\Users\\admin\\OneDrive"
Par contre, je ne sais pas si elles sont prises en compte immédiatement.
A tester.
Pour les variables globales, elles sont inscrites dans la branche
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Exemple:
Code : Tout sélectionner
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"ComSpec"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,\
00,6d,00,64,00,2e,00,65,00,78,00,65,00,00,00
"NUMBER_OF_PROCESSORS"="4"
"OS"="Windows_NT"
"Path"=hex(2):43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,44,\
00,61,00,74,00,61,00,5c,00,4f,00,72,00,61,00,63,00,6c,00,65,00,5c,00,4a,00,\
61,00,76,00,61,00,5c,00,6a,00,61,00,76,00,61,00,70,00,61,00,74,00,68,00,3b,\
00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,\
5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,3b,00,25,00,53,00,79,\
00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,3b,00,25,00,53,00,\
79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,53,00,79,\
00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,57,00,62,00,65,00,6d,00,3b,00,\
25,00,53,00,59,00,53,00,54,00,45,00,4d,00,52,00,4f,00,4f,00,54,00,25,00,5c,\
00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,57,00,69,00,6e,00,\
64,00,6f,00,77,00,73,00,50,00,6f,00,77,00,65,00,72,00,53,00,68,00,65,00,6c,\
00,6c,00,5c,00,76,00,31,00,2e,00,30,00,5c,00,3b,00,43,00,3a,00,5c,00,50,00,\
72,00,6f,00,67,00,72,00,61,00,6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,20,\
00,28,00,78,00,38,00,36,00,29,00,5c,00,4c,00,69,00,76,00,65,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,65,00,72,00,00,00
"PATHEXT"=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
"PROCESSOR_ARCHITECTURE"="AMD64"
"PROCESSOR_IDENTIFIER"="Intel64 Family 6 Model 55 Stepping 3, GenuineIntel"
"PROCESSOR_LEVEL"="6"
"PROCESSOR_REVISION"="3703"
"PSModulePath"=hex(2):25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,\
00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,\
50,00,6f,00,77,00,65,00,72,00,53,00,68,00,65,00,6c,00,6c,00,5c,00,4d,00,6f,\
00,64,00,75,00,6c,00,65,00,73,00,3b,00,25,00,53,00,79,00,73,00,74,00,65,00,\
6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,\
00,33,00,32,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,50,00,6f,00,\
77,00,65,00,72,00,53,00,68,00,65,00,6c,00,6c,00,5c,00,76,00,31,00,2e,00,30,\
00,5c,00,4d,00,6f,00,64,00,75,00,6c,00,65,00,73,00,00,00
"TEMP"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,5c,00,54,00,45,00,4d,00,50,00,00,00
"TMP"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,\
25,00,5c,00,54,00,45,00,4d,00,50,00,00,00
"USERNAME"="SYSTEM"
"windir"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,00,00
Gérard
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Comment crée, utiliser, supprimer une variable environne
Merci cage, je croyais que les variable environnementale étais persistante
Je vais pas utiliser le registre, ça ne convient pas du tout à se que je veux faire.

Je vais pas utiliser le registre, ça ne convient pas du tout à se que je veux faire.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment crée, utiliser, supprimer une variable environne
Pour les rendre permanentes de façon manuelle
[WIN]+R Ouvrir: sysdm.cpl
Onglet Paramètres systèmes avancés
Cliquer Variables d'environnement...
Dans la partie haute, les variables pour l'utilisateur actuel
Dans la partie basse, les variables système (globales)
[WIN]+R Ouvrir: sysdm.cpl
Onglet Paramètres systèmes avancés
Cliquer Variables d'environnement...
Dans la partie haute, les variables pour l'utilisateur actuel
Dans la partie basse, les variables système (globales)
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Comment crée, utiliser, supprimer une variable environne
SETX
« Crée ou modifie les variables d'environnement dans l'environnement de système, ou un utilisateur sans nécessiter de programmation ou de script.
La commande Setx également récupère les valeurs des clés de Registre et les écrit dans des fichiers texte. »
https://technet.microsoft.com/fr-fr/lib ... s.10).aspx
Aide rapide:
setx /?

« Crée ou modifie les variables d'environnement dans l'environnement de système, ou un utilisateur sans nécessiter de programmation ou de script.
La commande Setx également récupère les valeurs des clés de Registre et les écrit dans des fichiers texte. »
https://technet.microsoft.com/fr-fr/lib ... s.10).aspx
Aide rapide:
setx /?

Re: Comment crée, utiliser, supprimer une variable environne
La vraie question est "Pourquoi" as-tu besoin de modifier les variables d'environnement?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Comment crée, utiliser, supprimer une variable environne
Merci Marc
Et je ne veux pas utiliser le presse papier parce que je veux pas remplacer se qu'il à dedans...
Ont ne peut pas créer une variable persistante en mémoire pendent que l'ordi est allumé ?
Une variable que je peut atteindre quand je veux avec n'importe quel variable.
Un genre de presse papier 2 quoi.

Pour ne pas devoir créer de fichier pour écrire quelque choisie dedans.La vraie question est "Pourquoi" as-tu besoin de modifier les variables d'environnement?
Et je ne veux pas utiliser le presse papier parce que je veux pas remplacer se qu'il à dedans...
Ont ne peut pas créer une variable persistante en mémoire pendent que l'ordi est allumé ?
Une variable que je peut atteindre quand je veux avec n'importe quel variable.
Un genre de presse papier 2 quoi.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment crée, utiliser, supprimer une variable environne
Je ne vois pas le rapport..je ne veux pas utiliser le presse papier parce que je veux pas remplacer se qu'il à dedans
Pour ne pas devoir créer de fichier pour écrire quelque choisie dedans.

Sérieux si quelqu'un te comprend qu'il se manifeste. Fais un effort.Ont ne peut pas créer une variable persistante en mémoire pendent que l'ordi est allumé ?
Une variable que je peut atteindre quand je veux avec n'importe quel variable.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment crée, utiliser, supprimer une variable environne
je me sens moins seul dans ce désert d'incompréhension....Ar-S a écrit :Sérieux si quelqu'un te comprend qu'il se manifeste. Fais un effort.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment crée, utiliser, supprimer une variable environne
c'est du shadow 

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Comment crée, utiliser, supprimer une variable environne
Les variables qu'on créé depuis PB sont comme celles qu'on crée depuis le shell (cmd) avec la commande SET. Elles ne sont valables que dans l'instance du programme lui-même.
On peut par contre lire toutes les variables existantes depuis le programme PB.
On peut créer une variable environnement "externe" (persistante) (paramètre -m de SETX) depuis un programme, mais on ne peut pas l'utiliser dans la même instance, car tout programme lit ces variables à l'ouverture uniquement. (il faut donc fermer et rouvrir)
Voir la réponse donnée sur:
http://superuser.com/questions/647505/s ... iable-setx
(testé: ça fonctionne)

J'ai honte de l'admettre
mais j'ai compris ce que voulait shadow 
PS. Pour ne pas perdre de contenu du presse-papier (et d'une manière générale pour la productibité), il est préférable d'utiliser un presse-papier multiple comme par exemple Ditto (http://ditto-cp.sourceforge.net/) ou ClipMate http://www.thornsoft.com/
On peut par contre lire toutes les variables existantes depuis le programme PB.
On peut créer une variable environnement "externe" (persistante) (paramètre -m de SETX) depuis un programme, mais on ne peut pas l'utiliser dans la même instance, car tout programme lit ces variables à l'ouverture uniquement. (il faut donc fermer et rouvrir)
Voir la réponse donnée sur:
http://superuser.com/questions/647505/s ... iable-setx
(testé: ça fonctionne)

J'ai honte de l'admettre


PS. Pour ne pas perdre de contenu du presse-papier (et d'une manière générale pour la productibité), il est préférable d'utiliser un presse-papier multiple comme par exemple Ditto (http://ditto-cp.sourceforge.net/) ou ClipMate http://www.thornsoft.com/
Re: Comment crée, utiliser, supprimer une variable environne
Exemple pratique dérivé de l'article
Pour une variable système valable pour tous les utilisateurs. Sinon utiliser /u
https://technet.microsoft.com/fr-fr/lib ... s.10).aspx
Lancez ce programme avec PB en mode admin= Rien
Et on peut relancer le programme plusieurs fois, il ne se passe rien
La variable est pourtant là (voir panneau système) ou dans une console en mode admin
Refermez PB et réouvrez-le (toujours en mode admin) et relancez le même programme
La même chose, mais pour l'utilisateur en cours
(Si on veut voir le résultat de la commande, on remplace /c par /k, puis on tapes exit)
C'est le comportement normal des variables d'environnement.
et c'est pour cela qu'on préfère les fichiers flag pour passer un lot de données d'un programme à l'autre
(et aussi en partie pour cela qu'on a inventé le langage Perl)
@shadow: en un mot: n'utilises pas les variables d'environnement système sans en connaitre le fonctionnement, car mal utilisées tu peux mettre ton système en rade (ça ne l'effacera pas, mais ça peut mettre la zone)

https://technet.microsoft.com/fr-fr/lib ... s.10).aspx
Lancez ce programme avec PB en mode admin
Code : Tout sélectionner
RunProgram("CMD", "/c setx Hello Hello_World -m", "", #PB_Program_Wait)
Debug "Variable Hello = >" + GetEnvironmentVariable("Hello") + "<"
Code : Tout sélectionner
Variable Hello = ><
La variable est pourtant là (voir panneau système) ou dans une console en mode admin
Code : Tout sélectionner
C:\>echo %hello%
Hello_World
Code : Tout sélectionner
Variable Hello = >Hello_World<
Code : Tout sélectionner
ComputerName$ = GetEnvironmentVariable("COMPUTERNAME")
RunProgram("CMD", " /c setx /s " + ComputerName$ + " Hello Hello_World", "", #PB_Program_Wait)
Debug "Variable Hello = >" + GetEnvironmentVariable("Hello") + "<"
C'est le comportement normal des variables d'environnement.

et c'est pour cela qu'on préfère les fichiers flag pour passer un lot de données d'un programme à l'autre
(et aussi en partie pour cela qu'on a inventé le langage Perl)
@shadow: en un mot: n'utilises pas les variables d'environnement système sans en connaitre le fonctionnement, car mal utilisées tu peux mettre ton système en rade (ça ne l'effacera pas, mais ça peut mettre la zone)
