Tout est dans le titre, mais plus officiellement:
Pourquoi Windows me permet-il de renommer un exécutable en cours d'exécution sans le supprimer?
Tout est dans le titre, mais plus officiellement:
Pourquoi Windows me permet-il de renommer un exécutable en cours d'exécution sans le supprimer?
Réponses:
Il n’existe vraiment pas de renommer un fichier. Un fichier peut avoir plus d'un nom ou aucun nom. Ce n'est donc pas le fichier que vous renommez, mais l'entrée du répertoire. Renommer est une opération sur l'entrée de répertoire, qui n'est pas affectée par le fait que le fichier est verrouillé pour exécution.
dwShareMode
à zéro ou utiliser les indicateurs OF_SHARE_COMPAT
ou OF_SHARE_EXCLUSIVE
.
Il ne permet pas de supprimer le fichier exécutable et les DLL, car Windows mappe des parties des fichiers exécutables en mémoire dans le cadre de la création du processus. Il a donc besoin du fichier pendant toute la durée du processus.
Malheureusement, je n'ai pas de vraie raison pour laquelle il est toujours possible de renommer de tels fichiers. Je suppose que cela est fait pour activer la mise à jour des dll et des fichiers exe pendant leur exécution afin de minimiser le temps d'interruption du service.
Le linux (unix en général) permet en revanche de supprimer un fichier exécutable en cours d’exécution:
tmp]$ cp /usr/bin/md5sum .;ll md5*; \
(./md5sum /home/pub/iso/FC5/FC-5-i386-DVD.iso & ); \
rm md5sum ; ll md5*;ps -f
-rwxr-xr-x 1 sergey sergey 37276 Oct 16 02:38 md5sum
ls: cannot access md5*: No such file or directory
UID PID PPID C STIME TTY TIME CMD
sergey 2423 2422 0 02:32 pts/1 00:00:00 -bash
sergey 2533 1 0 02:38 pts/1 00:00:00 ./md5sum /home/pub/iso/FC5/FC-5-
sergey 2536 2423 0 02:38 pts/1 00:00:00 ps -f