[WIN] suicide de programme comment faire

suicide de programme comment faire [WIN] - C++ - Programmation

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  :??:

Reply

Marsh Posté le 24-04-2003 à 20:17:48   

Reply

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.

Reply

Marsh Posté le 24-04-2003 à 20:54:49    

Ca marche ca, mais le probleme c'est que le deuxieme executable reste, lui

Reply

Marsh Posté le 24-04-2003 à 21:15:58    

Timebombe Powa  :whistle:


Message édité par sr16 le 24-04-2003 à 21:16:04

---------------
TOPIC PERMANENT Matrox Parhelia
Reply

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...

Reply

Marsh Posté le 24-04-2003 à 21:58:16    

À faire de la place sur le disque dur ?
(lol)

Reply

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 :D

Reply

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 :)

Reply

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'.
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 :)  


 
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...

Reply

Marsh Posté le 24-04-2003 à 23:23:19    

d'ou tu vois que le unlink ça marche sous linux. pas du tout

Reply

Marsh Posté le 24-04-2003 à 23:23:19   

Reply

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).


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

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 :p  
apres ma question est juste a but pedagogique ... car reelement le but de ce genre de chose ... yen as pas  :D  
mais qu'est ce que c'est drole


Message édité par koulip31 le 25-04-2003 à 00:56:06
Reply

Marsh Posté le 25-04-2003 à 12:46:50    

L'excuse foireuse!!!!!!  :lol:  :lol:  :lol:  :lol:  :lol:

Reply

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.

 
 
 :hello:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

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.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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  :whistle: .
 


---------------
TOPIC PERMANENT Matrox Parhelia
Reply

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).


Message édité par blackgoddess le 26-04-2003 à 03:51:28

---------------
-( BlackGoddess )-
Reply

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...

Reply

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.

Reply

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 ...
 :whistle:


Message édité par phosphorus68 le 29-04-2003 à 14:09:09
Reply

Marsh Posté le 30-04-2003 à 03:24:11    

phosphorus68 a écrit :

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 ...
 :whistle:  


:jap: Ca me faisait chier de rechercher le topic  :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed