Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Désinstallation

4 réponses
Avatar
Bertrand Lenoir-Welter
Rebonjour

Autre sujet, cette fois de simple curiosité : étant donné qu'on ne peut
pas effacer un exécutable qui est en train de tourner en mémoire,
comment font les logiciels avec module de désinstallation ? Est-ce
qu'ils doivent en passer par un petit fichier batch en mode console
invisible qui s'auto-efface, ou bien est-ce que Windows comprend un
répertoire dans lequel il fait le ménage à chaque boot ?

Encore merci

4 réponses

Avatar
Jean-Claude BELLAMY
"Bertrand Lenoir-Welter" <bertrand-dot-2010-at-galaad-dot-net> a écrit dans
le message de groupe de discussion :
4bdff2f3$0$27588$
Rebonjour

Autre sujet, cette fois de simple curiosité : étant donné qu'on ne peut
pas effacer un exécutable qui est en train de tourner en mémoire, comment
font les logiciels avec module de désinstallation ? Est-ce qu'ils doivent
en passer par un petit fichier batch en mode console invisible qui
s'auto-efface, ou bien est-ce que Windows comprend un répertoire dans
lequel il fait le ménage à chaque boot ?



Généralement, la suppression d'exécutables "in use" passe par la clef
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager
et son entrée REG_MULTI_SZ "PendingFileRenameOperations"

Cette entrée sert ordinairement, comme son nom l'indique, à RENOMMER un
fichier en cours d'utilisation, l'opération de renommage étant effectuée
lors du prochain redémarrage de Windows (avant lancement du shell)

La syntaxe du contenu de cette entrée est la suivante :
<nom du fichier à supprimer> <0 binaire de séparation> <nouveau nom>

Mais si à la place du nouveau nom on met un zéro binaire, cela va supprimer
le fichier.
Pour écrire "à la mimine" un zéro binaire dans une entrée REG_MULTI_SZ sous
REGEDIT, il faut un peu "jongler" (il suffit de créer l'entrée dans un 1er
temps, avec les caractères du nom de fichier, puis par un clic droit de
sélectionner "modifier données binaire", et là on peut ajouter les 0 voulus
!)

Par programmation on peut faire appel à la fonction MoveFileEx (de
kernel32.dll)
http://msdn.microsoft.com/en-us/library/aa365240(VS.85).aspx
qui ne fait rien d'autre que créer automatiquement le contenu de l'entrée
"PendingFileRenameOperations"


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Avatar
Bertrand Lenoir-Welter
Par programmation on peut faire appel à la fonction MoveFileEx (de
kernel32.dll)



Si j'ai bien compris, il suffit de faire
MoveFileEx("C:MyProgram.exe",NULL,MOVEFILE_DELAY_UNTIL_REBOOT) ?
Avatar
Jean-Claude BELLAMY
"Bertrand Lenoir-Welter" <bertrand-dot-2010-at-galaad-dot-net> a écrit dans
le message de groupe de discussion :
4be0522b$0$2964$
Par programmation on peut faire appel à la fonction MoveFileEx (de
kernel32.dll)



Si j'ai bien compris, il suffit de faire
MoveFileEx("C:MyProgram.exe",NULL,MOVEFILE_DELAY_UNTIL_REBOOT) ?



EXACTEMENT !

cf. le MSDN :
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.


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Avatar
mdnews
On Tue, 04 May 2010 12:15:21 +0200, Bertrand Lenoir-Welter
<bertrand-dot-2010-at-galaad-dot-net> wrote:


Autre sujet, cette fois de simple curiosité : étant donné qu'on ne peut
pas effacer un exécutable qui est en train de tourner en mémoire,
comment font les logiciels avec module de désinstallation ? Est-ce
qu'ils doivent en passer par un petit fichier batch en mode console
invisible qui s'auto-efface, ou bien est-ce que Windows comprend un
répertoire dans lequel il fait le ménage à chaque boot ?




L'une des techniques utilisée consiste pour le programme de
désinstallation (unwise.exe ou autre) à commencer par se recopier
lui-même dans le répertoire temporaire puis passer la main à sa copie
dans ce %tmp. C'est en fait la copie qui fait le boulot réel.
Ainsi il peut supprimer son original et même le repertoire
d'installation.
Sa copie dans %tmp ne genera pas et sera effacée par la
désinstallation d'un produit suivant.