LuckyNut
Messages postés47Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention11 mars 2009
-
7 août 2005 à 11:44
simtiers
Messages postés207Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention 2 novembre 2006
-
7 août 2005 à 18:41
Salut à tous,
Un programme peut-il auto modifier son propre .exe ?
Si oui comment (sans utiliser de batch) ?
Exemple on lance le programme "revoir.exe", et une fois exécuté, si on l'ouvre dans un éditeur on aura la chaine "AU REVOIR !"
simtiers
Messages postés207Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention 2 novembre 2006 7 août 2005 à 12:58
Normalement, modifier un exe lancé sous Windows n'est pas possible :
rien qu'à la tentative d'ouverture du fichier en mode écriture, tu
auras une erreur : le fichier est en cours d'utilisation.
Tu peux faire avec un 2e programme : lance revoir.exe, lui-même lance
change.exe et se faire. Après une pause de quelques instructions( le
temps que revoir.exe soit bien fermé), il ouvre et écrit dans le
fichier : c'est la méthode la plus rapide que je vois.
En tout cas, je vois pas trop à quoi ça servirai....
Xterminhate, à moins que je me goure, le chat de Brunews doit être un
chat persan : y'a qq année une de mes voisines en avait un....
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 7 août 2005 à 18:03
Dans ce cas, ne faudrait-il pas fragmenter l'exe en plusieurs fichiers et ne mettre à jour que les fichiers ressources (.dll et etc) sans toucher à l'exe de démarrage...
LuckyNut
Messages postés47Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention11 mars 2009 7 août 2005 à 18:25
Oui mais je suis pas certain qu'on puisse également toucher aux dll d'extension ou de resource. De plus l'exe lui-même peut avoir des fonctions qui doivent être mises à jour...
Sinon je vois peut etre une solution :
revoir.exe crée une copie revoir2.exe, la lance et se ferme.
revoir2.exe met à jour revoir.exe, le lance et se ferme.
revoir efface revoir2.exe
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 7 août 2005 à 18:38
Une dll est un fichier comme un autre. Bien sur, il faut peut etre eviter de la charger dans l'exe avant de la modifier, ca me parait évident. Quant à l'.exe, il ne fait que le démarrage de l'application en cherchant les mises à jour et en les réalisant, rien de plus. Ca mise à jour est vraiment secondaire.
simtiers
Messages postés207Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention 2 novembre 2006 7 août 2005 à 18:41
La mise à jour style AVG et autre :
tu as un module .exe qui se lance et charge la mise à jour, il ferme
l'application entière (avec ses dépendances => DLLs) par un
SendMessage(hwnd, WM_DESTROY...) par exemple, la met à jour, puis
relance le programme.