Variables d'environnement
Résolu
isold
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
isold Messages postés 57 Date d'inscription Statut Membre Dernière intervention -
isold Messages postés 57 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne suis pas une experte en langage C (avec Code::Block) mais je suis arrivée plus ou moins à ce que je voulais mais il y a encore du travail à faire...
Voilà, je veux pouvoir modifier une variable d'environnement (lettre du lecteur courant) qui sera utilisée par la suite dans un batch. Voici mon programme :
A l'heure actuelle, quand on lance le programme (whatdisk.exe), il affiche la lettre du lecteur suivi de : Exemple :
J'aimerais que cette valeur soit conservée dans les variables d'environnement comme si on avait tapé au niveau du shell "set DISK=P:". Mais je ne sais pas comment faire. La variable %DISK% sera utilisée par la suite dans un batch.
J'ai essayé "set disk=|whatdisk.exe" : ça m'affiche la lettre sur la console mais ça n'ajoute pas la variable DISK
J'ai essayé "whatdisk.exe|set disk=" : ça s'exécute mais ça n'affiche rien ni à la console ni dans les variables.
Je me demande si ne je ne devrais pas, directement en C, modifier les variables de façon durable avec un truc du genre execve(), exec(), system() mais je ne sais pas comment faire non plus.
Quelqu'un pourrait-il m'aider ?
Merci beaucoup.
Je ne suis pas une experte en langage C (avec Code::Block) mais je suis arrivée plus ou moins à ce que je voulais mais il y a encore du travail à faire...
Voilà, je veux pouvoir modifier une variable d'environnement (lettre du lecteur courant) qui sera utilisée par la suite dans un batch. Voici mon programme :
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char **argv) { char st_prog_path[MAX_PATH]; char lettre; // Récupération lettre du lecteur courant if (GetModuleFileName(NULL, st_prog_path, MAX_PATH)) { lettre = st_prog_path[0]; } else { printf("Error: GetModuleFileName a retourné une erreur"); } printf("%c:\n", lettre); return 0; }
A l'heure actuelle, quand on lance le programme (whatdisk.exe), il affiche la lettre du lecteur suivi de : Exemple :
P:\cmd>whatdisk.exe P: P:\cmd>
J'aimerais que cette valeur soit conservée dans les variables d'environnement comme si on avait tapé au niveau du shell "set DISK=P:". Mais je ne sais pas comment faire. La variable %DISK% sera utilisée par la suite dans un batch.
J'ai essayé "set disk=|whatdisk.exe" : ça m'affiche la lettre sur la console mais ça n'ajoute pas la variable DISK
J'ai essayé "whatdisk.exe|set disk=" : ça s'exécute mais ça n'affiche rien ni à la console ni dans les variables.
Je me demande si ne je ne devrais pas, directement en C, modifier les variables de façon durable avec un truc du genre execve(), exec(), system() mais je ne sais pas comment faire non plus.
Quelqu'un pourrait-il m'aider ?
Merci beaucoup.
A voir également:
- Variables d'environnement
- Java runtime environnement - Télécharger - Langages
- Le fournisseur de temps vmictimeprovider a indiqué que le matériel et l'environnement d'exploitation actuels ne sont pas pris en charge et ont été arrêtés. ce comportement est attendu de vmictimeprovider dans des environnements invités non hyperv. il peut également être attendu du fournisseur actuel dans l'environnement d'exploitation utilisé. - Forum Windows 10
- Le systeme n'a pas trouvé l'option d'environnement spécifié - Forum Windows
- Variable d'environnement temp ✓ - Forum Windows 10
- Nuage de points excel 4 variables - Forum Excel
Sur mon PC ça marche bien et j'ai donc déjà une solution pour résoudre le problème.
Il reste celle du programme C. Comment dans le programme whatdisk.c j'aurais pu directement modifier les variables d'environnement ? Si je n'ai pas de solution concernant ce dernier point, j'ai au moins celle que tu m'as proposée et qui fonctionne bien. Merci beaucoup, donc... ;-)
Sur mon PC ça marche bien et j'ai donc déjà une solution pour résoudre le problème.
Il reste la solution C. Comment dans le programme whatdisk.c j'aurais pu directement modifier les variables d'environnement ? Si je n'ai p
system( "set DISK="+lettre );
je crois que tu n'a pas le choix, si tu utilises putenv() par exemple il me semble que ça n'affectera que les programmes appelé par le programme mais n'affecteras pas l'environnement parent.
Mais si je n'arrive pas, ce n'est pas grave. C'est vrai que l'idéal eût été la solution toute C, mais c'est juste quelque chose pour moi et non pas que je je dois fournir. Comme cela marche très bien, je vais faire avec et ça ira très bien.
En tout cas, je te remercie beaucoup pour ton aide...
Peut-être un jour te rendrais-je la pareille dans un autre domaine, qui sait ? ;-)
Fil clos pour problème résolu. Merci.