suicide de programme comment faire [WIN] - C++ - Programmation
Marsh Posté le 24-04-2003 à 20:22:38
Essayes ca : juste avant de quitter tu lances un processus P independant puis tu quittes. Dans P, tu attends une centaine de msec puis tu effaces l'ancien éxé.
Ca marchera ptet pas (pas envie d'essayer), dans ce cas faudra penser mieux.
Marsh Posté le 24-04-2003 à 20:54:49
Ca marche ca, mais le probleme c'est que le deuxieme executable reste, lui
Marsh Posté le 24-04-2003 à 21:15:58
Timebombe Powa
Marsh Posté le 24-04-2003 à 21:20:14
LOL c'est clair! Entre nous je vois pas trop a quoi ca peut servir d'autre...
Marsh Posté le 24-04-2003 à 22:19:23
Bah, disons que c un programme qui a conscience de sa propre médiocrité, c pas mal
Marsh Posté le 24-04-2003 à 22:25:50
Le supprimer alors qu'il est en cours de fonctionnement, ca me parait difficile. Mais tu peux inscrire la commande de suppression dans la base de registre, dans une clé 'RunOnce'.
Tout ce qui s'y trouve est exécuté au démarrage de windows et supprimé du registre. Ainsi, ton programme sera supprimé au prochain reboot
Marsh Posté le 24-04-2003 à 22:33:49
mrBebert a écrit : Le supprimer alors qu'il est en cours de fonctionnement, ca me parait difficile. Mais tu peux inscrire la commande de suppression dans la base de registre, dans une clé 'RunOnce'. |
y me semble qu'il y a tout un article dans la knowledge base de la msdn a ce sujet, mais manque de bol je me rapelle pu du tout du titre...
Marsh Posté le 24-04-2003 à 23:23:19
d'ou tu vois que le unlink ça marche sous linux. pas du tout
Marsh Posté le 25-04-2003 à 00:21:33
++Taz a écrit : d'ou tu vois que le unlink ça marche sous linux. pas du tout |
bah si c'est une feature de ext2 en tout cas (pour les autres fs j'en sais rien).
Marsh Posté le 25-04-2003 à 00:53:41
++Taz a écrit : d'ou tu vois que le unlink ça marche sous linux. pas du tout |
teste tu verras que ca foncitonne linux na pas de systeme de droit a l'execution :=)
vla le code source
int main()
{
unlink("./a.out" );
return (0);
}
et ca morche du feu de zeus
apres ma question est juste a but pedagogique ... car reelement le but de ce genre de chose ... yen as pas
mais qu'est ce que c'est drole
Marsh Posté le 25-04-2003 à 13:34:03
http://msdn.microsoft.com/library/ [...] fileex.asp
Citation : If dwFlags specifies MOVEFILE_DELAY_UNTIL_REBOOT and lpNewFileName is NULL, MoveFileEx registers the lpExistingFileName file to be deleted when the system restarts. If lpExistingFileName refers to a directory, the system removes the directory at restart only if the directory is empty. |
Marsh Posté le 25-04-2003 à 15:07:29
C'est plus complexe que cela.
Y'a plusieurs solution (on peut utiliser un .bat, car lui il peut s'auto deleter).
Y'a un article dans la msdn la dessus.
Marsh Posté le 26-04-2003 à 01:24:18
Si ton programme fait un low-level format du HD avec reflashage du bios, il n'aura pas besoin de s'auto deleter .
Marsh Posté le 26-04-2003 à 03:51:08
tu peux, dans ton prog, créer puis execute un .bat qui fait une boucle : tant que l'exe existe, il essaie de le supprimer. Puis une fois l'exe supprimé, il se supprime lui même (dans un .bat ca fonctionne).
Marsh Posté le 26-04-2003 à 04:04:11
Question : est ce que c'est possible a partir d'un programme de lancer un processus (dans le genre de Createprocess()), mais au lieu de lui passer un fichier, on lui passe un espace mémoire genre 'Named Shared Memory', où il commencerait son éxécution, un peu dans le meme genre que CreateThread() ? Bien sur, ce processus doit continuer a vivre meme si son parent a quitté.
La reponse est surement non, mais on sait jamais...
Marsh Posté le 26-04-2003 à 09:55:38
Il me semble qu'il y a une methode qui ressemble à ça:
1/ La première fois que ton programme se lance il créer un copie de lui même avec CreateFile et le flag FILE_FLAG_DELETE_ON_CLOSE.
2/ Ensuite le programme lance l'execution de la copie et se termine
3/ Tu peux utiliser un paramètre de la ligne de commande pour déterminer si c'est l'originale ou la copie quie tourne.
4/ La copie elle efface fichier d'origine et s'execute normalement. Lorsque la copie a terminé son execution le système l'efface tout seul grâce au flag FILE_FLAG_DELETE_ON_CLOSE.
Marsh Posté le 29-04-2003 à 14:06:36
réponse de MagicBuzz ici
http://forum.hardware.fr/forum2.ph [...] ubcat=#bas
Mission pas Impossible:
Je nierai avoir cross-posté et ce message s'autodétruira dans 3 secondes ... 2 ... 1 ... une demie ... un quart ...
Marsh Posté le 30-04-2003 à 03:24:11
phosphorus68 a écrit : réponse de MagicBuzz ici |
Ca me faisait chier de rechercher le topic
Marsh Posté le 24-04-2003 à 20:17:48
comment faire pour qu'un executable s'auto-supprime a la fin de son execution sous windows ?
car sour linux un simple
unlink("mon_beau_prog" );
suffit largement
par contre sous windows c'est une autre paire de manche du fait que windows gere un systeme de droit sur les programmes en cours d'execution ....
comment outre passer ca pour permettre a mon programme de s'auto suicider