回答:
ファイルの名前を変更するようなことは本当にありません。ファイルには複数の名前を付けることも、名前を付けないこともできるので、名前を変更するのはファイルではなく、ディレクトリエントリです。名前の変更は、ディレクトリエントリに対する操作であり、ファイルが実行のためにロックされているという事実の影響を受けません。
dwShareMode
場合、ゼロに設定するか、OF_SHARE_COMPAT
またはOF_SHARE_EXCLUSIVE
フラグを使用します。
Windowsは、実行可能ファイルの一部をプロセス作成の一部としてメモリにマップするため、実行可能ファイルとDLLを削除することはできません。そのため、プロセスの存続期間中にファイルが必要です。
残念ながら、そのようなファイルの名前を変更できる真の理由はありません。これは、サービスの中断時間を最小限に抑えるために、実行中にdllおよびexeファイルの更新を可能にするために行われたと思います。
対照的に、linux(一般的にはUNIX)では、実行中に実行可能ファイルを削除できます。
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