Variable d'environnement
Résolu/Fermé
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
-
5 oct. 2013 à 01:15
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 8 oct. 2013 à 16:41
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 8 oct. 2013 à 16:41
A voir également:
- Variable d'environnement
- Environnement de récupération introuvable ✓ - Forum Windows 8 / 8.1
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Microsoft Office
- Vérifier variable d'environnement TEMP - Forum Word
- &Quot;Environnement de récupération introuvable" ✓ - Forum Windows 10
2 réponses
Utilisateur anonyme
8 oct. 2013 à 12:03
8 oct. 2013 à 12:03
Bonjour,
Si tu cherches à conserver le contenu d'une variable après fermeture du programme, tu peux sans doute l'enregistrer dans un fichier, as-tu cherché dans cette direction?
Si tu cherches à conserver le contenu d'une variable après fermeture du programme, tu peux sans doute l'enregistrer dans un fichier, as-tu cherché dans cette direction?
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
8 oct. 2013 à 13:48
8 oct. 2013 à 13:48
Bonjour,
merci pour ta réponse.
En fait, quand on insère une clef USB elle peut prendre pour lettre F: ou H: ou K: selon les disques déjà existants sur la machine où elle est placée.
J'ai appris comment récupérer, par un exécutable réalisé en C, la lettre du lecteur à partir duquel l'exécutable est lancé. Le tout, maintenant, est de compléter ce programme en C pour placer cette lettre parmi les autres variables d'environnement comme si, à la main, j'avais tapé : set USBDRIVE=G: et ensuite, une fois exécuté, le programme s'arrête en laissant cette variable qui pourra être utilisée par d'autres programmes déjà existants et qui ne sont pas conçus pour aller chercher cette lettre dans un fichier mais dans les variables d'environnement.
J'espère ne pas avoir été confus dans mon explication.
merci pour ta réponse.
En fait, quand on insère une clef USB elle peut prendre pour lettre F: ou H: ou K: selon les disques déjà existants sur la machine où elle est placée.
J'ai appris comment récupérer, par un exécutable réalisé en C, la lettre du lecteur à partir duquel l'exécutable est lancé. Le tout, maintenant, est de compléter ce programme en C pour placer cette lettre parmi les autres variables d'environnement comme si, à la main, j'avais tapé : set USBDRIVE=G: et ensuite, une fois exécuté, le programme s'arrête en laissant cette variable qui pourra être utilisée par d'autres programmes déjà existants et qui ne sont pas conçus pour aller chercher cette lettre dans un fichier mais dans les variables d'environnement.
J'espère ne pas avoir été confus dans mon explication.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié par [Dal] le 8/10/2013 à 15:58
Modifié par [Dal] le 8/10/2013 à 15:58
Salut heliconius,
Sous Windows, c'est compliqué. C'est résumé là : Environment Variables
Avec l'API Windows, tu peux utiliser SetEnvironmentVariable, mais cela ne pourra avoir un effet que dans le processus qui lance cette fonction et ses processus fils.
Si tu veux que le changement soit permanent, tu dois insérer la variable dans le registre à
Tu fais cela avec RegCreateKeyEx et SendMessage.
De cette façon, les nouveaux processus lancés par explorer.exe, même non créés (lancés) par ton application y auront accès. Cependant, cela ne sera (probablement.. à tester) pas le cas du cmd.exe dans lequel tu auras éventuellement lancé ton programme (car il a été lancé *avant*) à moins de rebooter ton ordinateur, ou d'exécuter un .bat dans le terminal ouvert modifiant l'environnement pour ce cmd.exe.
Dal
Sous Windows, c'est compliqué. C'est résumé là : Environment Variables
Avec l'API Windows, tu peux utiliser SetEnvironmentVariable, mais cela ne pourra avoir un effet que dans le processus qui lance cette fonction et ses processus fils.
Si tu veux que le changement soit permanent, tu dois insérer la variable dans le registre à
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environmentet envoyer un message
WM_SETTINGCHANGEavec l'option "Environment".
Tu fais cela avec RegCreateKeyEx et SendMessage.
De cette façon, les nouveaux processus lancés par explorer.exe, même non créés (lancés) par ton application y auront accès. Cependant, cela ne sera (probablement.. à tester) pas le cas du cmd.exe dans lequel tu auras éventuellement lancé ton programme (car il a été lancé *avant*) à moins de rebooter ton ordinateur, ou d'exécuter un .bat dans le terminal ouvert modifiant l'environnement pour ce cmd.exe.
Dal
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
Modifié par heliconius le 8/10/2013 à 16:42
Modifié par heliconius le 8/10/2013 à 16:42
Merci encore une fois pour cette réponse complète.
Je pensais toujours à mon projet de MySQL Portable sur clef USB.
Une fois ma clef insérée et son menu mis en place, plutôt que redéfinir les fichiers ini seulement à l'ouverture du terminal, j'avais pensé intégrer ce programme de réécriture des ini lors du processus de mise en place du menu et, tant qu'à faire, au cas où, écrire dans une variable d'environnement la lettre du lecteur pour ne plus avoir besoin de la rechercher.
Mais je me rends compte, comme tu dis, que ça risque d'être pour moi un brin compliqué :)
De toutes façons, je crois qu'avec Windows, c'est toujours compliqué ! :)
Soyons modeste et contentons-nous de ce qu'on a.
En tout cas, merci et je clos le sujet.
Je pensais toujours à mon projet de MySQL Portable sur clef USB.
Une fois ma clef insérée et son menu mis en place, plutôt que redéfinir les fichiers ini seulement à l'ouverture du terminal, j'avais pensé intégrer ce programme de réécriture des ini lors du processus de mise en place du menu et, tant qu'à faire, au cas où, écrire dans une variable d'environnement la lettre du lecteur pour ne plus avoir besoin de la rechercher.
Mais je me rends compte, comme tu dis, que ça risque d'être pour moi un brin compliqué :)
De toutes façons, je crois qu'avec Windows, c'est toujours compliqué ! :)
Soyons modeste et contentons-nous de ce qu'on a.
En tout cas, merci et je clos le sujet.