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?
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 indicateursOF_SHARE_COMPAT
ouOF_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:
la source
J'imagine que c'est parce qu'un nom est juste un attribut du même contenu binaire du fichier, aussi longtemps que les données sont là, le descripteur, conservé par le processus en cours d'exécution, ne changera pas.
la source