Comment crée, utiliser, supprimer une variable environnement

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Comment crée, utiliser, supprimer une variable environnement

Message par Shadow »

Salut,

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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment crée, utiliser, supprimer une variable environne

Message par falsam »

SetEnvironmentVariable(Name$, Value$)
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%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment crée, utiliser, supprimer une variable environne

Message par Shadow »

Ah ya ça dans PB :D
Merci Falsam 8)
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.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment crée, utiliser, supprimer une variable environne

Message par Shadow »

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 ?
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.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Comment crée, utiliser, supprimer une variable environne

Message par cage »

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)

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"
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:

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
A manipuler avec précaution.
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
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment crée, utiliser, supprimer une variable environne

Message par Shadow »

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.
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.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Comment crée, utiliser, supprimer une variable environne

Message par cage »

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)
■ 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
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment crée, utiliser, supprimer une variable environne

Message par Marc56 »

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 /?

:wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment crée, utiliser, supprimer une variable environne

Message par Ar-S »

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
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment crée, utiliser, supprimer une variable environne

Message par Shadow »

Merci Marc :wink:
La vraie question est "Pourquoi" as-tu besoin de modifier les variables d'environnement?
Pour ne pas devoir créer de fichier pour écrire quelque choisie dedans.
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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment crée, utiliser, supprimer une variable environne

Message par Ar-S »

je ne veux pas utiliser le presse papier parce que je veux pas remplacer se qu'il à dedans
Je ne vois pas le rapport..
Pour ne pas devoir créer de fichier pour écrire quelque choisie 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.
Sérieux si quelqu'un te comprend qu'il se manifeste. Fais un effort.
~~~~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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment crée, utiliser, supprimer une variable environne

Message par falsam »

Ar-S a écrit :Sérieux si quelqu'un te comprend qu'il se manifeste. Fais un effort.
je me sens moins seul dans ce désert d'incompréhension....
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%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Comment crée, utiliser, supprimer une variable environne

Message par SPH »

c'est du shadow :lol:

!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
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment crée, utiliser, supprimer une variable environne

Message par Marc56 »

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)
:wink:

J'ai honte de l'admettre :o mais j'ai compris ce que voulait shadow :mrgreen:

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/
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment crée, utiliser, supprimer une variable environne

Message par Marc56 »

Exemple pratique dérivé de l'article

:arrow: 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

Code : Tout sélectionner

RunProgram("CMD", "/c setx Hello Hello_World -m", "", #PB_Program_Wait)
Debug "Variable Hello = >" + GetEnvironmentVariable("Hello") + "<"
= Rien

Code : Tout sélectionner

Variable Hello = ><
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

Code : Tout sélectionner

C:\>echo %hello%
Hello_World
Refermez PB et réouvrez-le (toujours en mode admin) et relancez le même programme

Code : Tout sélectionner

Variable Hello = >Hello_World<
La même chose, mais pour l'utilisateur en cours

Code : Tout sélectionner

ComputerName$ = GetEnvironmentVariable("COMPUTERNAME")
RunProgram("CMD", " /c setx /s " + ComputerName$ + " Hello Hello_World", "", #PB_Program_Wait)
Debug "Variable Hello = >" + GetEnvironmentVariable("Hello") + "<"
(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. 8)
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) :!:
Répondre