Problème de path de l'application [Résolu]

Signaler
Messages postés
13
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
11 avril 2005
-
Messages postés
13
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
11 avril 2005
-
Salut, j'ai un problème avec mon application. Donc je dois écrire des fichiers dans le répertoire d'installation de mon application. Donc je fais une récupération du path avec:

if(!::GetCurrentDirectory(sizeof(path) - 1, path))
{
// ::GetLastError()
}

J'ai essayé aussi avec :

GetModuleFileName(NULL, szPath, _MAX_PATH);

Alors ça marche mais pas dans tout les cas.

En fait mon application a une option pour se lancé automatiquement au démarrage de windows (par une clé dans la base de registre HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run)

Et donc le problème c'est qu'au redémarrage les deux fonctions ci-dessus ne prenne plus le répertoire d'ou se trouve l'exe, mais le répertoire dans C:\Documents and Settings\User qui a la session ouverte

Donc il écrit dans le mauvais répertoire et j'aime pas ca :p

Si vous avez une idée elle est la bienvenue!
Merci

Pupet Master

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
void AppPathInitialize()
{
char szThis[300];
char* c = szThis + GetModuleFileName(NULL, szThis, 300); while(*c !'\\') c--; *c 0;
SetCurrentDirectory(szThis);
}

ciao...
BruNews, MVP VC++
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Il faut récupérer le paramètre d'indice 0 de la ligne de commande qui est le nom du programme avec le chemin d'accès complet.
Messages postés
207
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
2 novembre 2006

Je pense pas que tu puisses le récupérer facilement : en fait, si tu reçois le repertoire

C:\Documents and Settings\User qui a la session ouverte




c'est simplement parce que quand tu lance un programme avec la base de
registre, c'est comme si tu faisais un ShellExecute( NULL, "open",
RepertoireReel, NULL, Repertoire_Utilisateur, SW_SHOWNORMAL );

=> les fct de récupération de rep courant te renverront Repertoire_Utilsateur...



Le mieux serait de sauvegarder le repertoire de ton exe dans le
registre au tout début (si la chaine existe pas), ou à l'installation
(comme la plupart des progs) => ça permet de savoir où est l'EXE
sans avoir à passer à travers le repertoire courant qu'on pourrait
appler "d'environement"





L'intelligence, c'est comme les parachutes : quand on n'en a pas, on s'écrase
(Pierre Desproges)
Messages postés
13
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
11 avril 2005

Ca a l'air tellement facile pour toi BruNews

En tout cas merci c'est nickel.

Pupet Master