Semuanya ada dalam judul, tetapi lebih resmi:
Mengapa Windows membiarkan saya mengganti nama yang dapat dijalankan yang dapat dijalankan, tetapi tidak menghapusnya?
Semuanya ada dalam judul, tetapi lebih resmi:
Mengapa Windows membiarkan saya mengganti nama yang dapat dijalankan yang dapat dijalankan, tetapi tidak menghapusnya?
Jawaban:
Benar-benar tidak ada yang namanya mengganti nama file. File dapat memiliki lebih dari satu nama atau tanpa nama, jadi bukan file yang Anda ganti namanya tetapi entri direktori. Mengganti nama adalah operasi pada entri direktori, yang tidak terpengaruh oleh fakta bahwa file dikunci untuk dieksekusi.
dwShareMode
ke nol atau menggunakan tanda OF_SHARE_COMPAT
atau OF_SHARE_EXCLUSIVE
.
Itu tidak memungkinkan untuk menghapus file yang dapat dieksekusi dan DLL karena Windows memetakan bagian dari file yang dapat dieksekusi ke dalam memori sebagai bagian dari proses penciptaan, sehingga diperlukan file selama masa proses.
Sayangnya saya tidak punya alasan mengapa masih memungkinkan untuk mengganti nama file tersebut. Saya kira ini dilakukan untuk mengaktifkan pembaruan file dll dan exe ketika mereka berjalan untuk meminimalkan waktu gangguan layanan.
Sebaliknya, linux (unix in general) memungkinkan untuk menghapus file yang dapat dieksekusi ketika sedang berjalan:
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