Problème de path de l'application

Résolu
cs_PupetMaster Messages postés 13 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 11 avril 2005 - 9 avril 2005 à 19:16
cs_PupetMaster Messages postés 13 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 11 avril 2005 - 10 avril 2005 à 11:41
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

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

ciao...
BruNews, MVP VC++
3
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
9 avril 2005 à 19:35
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.
0
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
9 avril 2005 à 19:55
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)
0
cs_PupetMaster Messages postés 13 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 11 avril 2005
10 avril 2005 à 11:41
Ca a l'air tellement facile pour toi BruNews

En tout cas merci c'est nickel.

Pupet Master
0
Rejoignez-nous