Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Un exécutable qui s'auto-èdétruit Lun 7 Juil 2014 - 7:47 | |
| Comment faire pour qu'un exécutable arrive à supprimer son propre fichier exe ? La commende FILE_DELETE ne marche pas, car le fichier est toujours ouvert tant que l'exécutable est en route ! Alors, la petite astuce suivante résout le problème: - Code:
-
' Ce programme montre comment un programme Panoramic ' peut s'auto-détruire.
label quitter
dim gm$, dossier$, cmd$ gm$ = chr$(34)
dlist 2
dossier$ = file_extract_path$(param_value$(0))
item_add 2,"cd "+gm$+dossier$+gm$ item_add 2,":Repeat" item_add 2,"del "+gm$+param_value$(0)+gm$ item_add 2,"if exist "+gm$+param_value$(0)+gm$+" goto Repeat" item_add 2,"del "+gm$+dossier$+"temp.bat"+gm$
button 1 : top 1,10 : left 1,10 : width 1,200 on_click 1,quitter : caption 1,"Quitter et supprimer"
end
quitter: file_save 2,dossier$ + "temp.bat" cmd$ = "cmd /c @temp.bat" execute cmd$ terminate | |
|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un exécutable qui s'auto-èdétruit Lun 7 Juil 2014 - 8:17 | |
| Astuce excellente à mon avis, ça pourrait être ajouté dans les procédures utiles sur le site du journal... Ca ne sert certe que pour des cas précis (après une installation, par exemple), mais dans certains cas, ça donne une solution qu'il n'est pas du tout évident de trouver tout seul ... | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 7 Juil 2014 - 11:22 | |
| @ Klaus,
Excellente astuce ! Mais pourrais tu commenter pour que l' on sache qui fait quoi ?... | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un exécutable qui s'auto-èdétruit Lun 7 Juil 2014 - 15:45 | |
| Voici une version commentée du programme: - Code:
-
' Ce programme montre comment un programme Panoramic ' peut s'auto-détruire.
' procédure exécutée pour quitter le programme en supprimant l'exécutable label quitter
dim gm$ : gm$ = chr$(34) : ' guillemets dim dossier$, cmd$
' utilisé pour construire le fichier temp.bat qui fait le travail dlist 2
' extraire le dossier à partir du nom de l'exécutable dossier$ = file_extract_path$(param_value$(0))
' construire le texte du fichier temp.bat: ' changer pour le dossier dans lequel se trouve l'exécutable item_add 2,"cd "+gm$+dossier$+gm$ ' label pour la boucle de suppression item_add 2,":Repeat" ' tentative de suppression de l'excutable item_add 2,"del "+gm$+param_value$(0)+gm$ ' si la suppression a échoué, on reboucle sur le label item_add 2,"if exist "+gm$+param_value$(0)+gm$+" goto Repeat" ' supprimer ce fichier temp.bat item_add 2,"del "+gm$+dossier$+"temp.bat"+gm$
button 1 : top 1,10 : left 1,10 : width 1,200 on_click 1,quitter : caption 1,"Quitter et supprimer"
end
quitter: ' créer le fichier temp.bat avec la procédure ci-dessus file_save 2,dossier$ + "temp.bat" ' construire la ligne de commande à l'intention de la commande EXECUTE cmd$ = "cmd /c @temp.bat" ' exécuter le fichier temp.bat execute cmd$ ' et arrêter le programme terminate
' lorsque le programme sera arrêté, le fichier temp.bat déjà en exécution ' pourra supprimer l'exécutable Panoramic. Et ensuit, il s'auto-detruit. ' Et ceci est une particularité des fichiers *.BAT: ils peuvent s'auto-détruire. ' Ceci est certainement dû au fait que son contenu est lu en mémoire et ' géré en mémoire, sans rester ouvert pendant toute l'exécution du fichier BAT. ' Et c'est ce qui permet de réaliser cette astuce.
Ceci peut être utile pour un programme d'installation ou de mise à jour. Imagine in programme nommé INSTALLER_MON_APPLICATION.exe qui installe ton application, avec tout ce qu'il faut faire; création de dossiers, copies de fichiers, etc. Puis, ce programme d'installation s'auto-detruit, par sécurité. | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 7 Juil 2014 - 16:08 | |
| @ Klaus, Merci pour les commentaires qui vont aider à comprendre le schmilblick. L' installation d' un logiciel est bien l' utilité que je voyais à cette astuce. Je n' irais pas jusque à parler de sécurité mais plutôt de gain de mémoire. | |
|
Contenu sponsorisé
| Sujet: Re: Un exécutable qui s'auto-èdétruit | |
| |
|