Bonjour,
Je cherche a ecrire en c++ un programme fonctionnant sous windows qui sauvegarde les donnees saisies par l'utilisateur dans l'executable meme. Je sais que ca peut paraitre bizarre, mais je cherche a produire un fichier exe qui soit entierement autonome et qui ne pollue pas le disque dur de l'utilisateur avec des fichiers de donnees supplementaires. En clair je voudrais un programme qui "se souvient" sans laisser de traces.
Voici comment j'y arrive de maniere tres simple sous Linux: Il suffit de declarer un buffer1 de donnees, dont les premiers octets contiennent un tag unique:
Lors de l'execution du programme, les donnees saisies par l'utilisateur sont stockees dans le buffer1, apres le tag d'identification. Lorsque l'utilisateur demande la fermeture du programme, on appelle une fonction qui va charger une copie du programme dans un autre buffer2. Ensuite on recherche dans ce nouveau buffer2 la presence du tag. Une fois celui-ci trouve, il suffit de copier Buffer1 a l'endroit ou se trouve le tag dans Buffer2. Il ne reste plus qu'a ecraser le fichier executable avec le contenu de Buffer2. Ainsi lors du prochain lancement du programme, les donnees de la session precedente sont bien la.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 static char Buffer1[5000]="Tag d'indentification";
Alors ca marche impecablement sous Linux. Le probleme sous Windows (une raison de plus de detester de windows...) c'est que le systeme interdit l'ecrasement d'un fichier en cours d'execution.
Y a-t-il un moyen outre-passer cette interdiction? Sinon j'ai pense qu'il y a peut etre moyen de charger une copie de l'executable en memoire, et de quitter le programme tout en le laissant residant en memoire (a l'epoque je sais que c'etait possible sous DOS, c'etait les fameux programmes TSR, Terminate and Stay Resident). Le programme resident pourrait alors ecraser le fichier executable puisque celui-ci est ferme.
Y a-t-il moyen de faire ca?
Partager