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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
"Bertrand Lenoir-Welter" <bertrand-dot-2010-at-galaad-dot-net> a écrit dans
le message de groupe de discussion :
4bdff2f3$0$27588$ba4acef3@reader.news.orange.fr...
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
"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
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) ?
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) ?
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) ?
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
"Bertrand Lenoir-Welter" <bertrand-dot-2010-at-galaad-dot-net> a écrit dans
le message de groupe de discussion :
4be0522b$0$2964$ba4acef3@reader.news.orange.fr...
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
"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
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.
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.
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.