1
當我使用最新版本的McAfee Antivirus時,我注意到碎化功能可以刪除正在運行的文件,然後要求您重新啓動計算機。有誰知道它如何刪除正在運行的文件而不關閉它們?刪除正在運行的文件
當我使用最新版本的McAfee Antivirus時,我注意到碎化功能可以刪除正在運行的文件,然後要求您重新啓動計算機。有誰知道它如何刪除正在運行的文件而不關閉它們?刪除正在運行的文件
它可能取決於操作系統和文件系統類型。在Linux和Unix上,刪除文件就是從文件夾中刪除一個條目。如果沒有文件夾條目指向該文件,該文件實際上會在最後關閉時被刪除。因此,即使在另一個進程中打開文件,也可以安全地刪除文件。
在Windows上,MSDN說:如果一個應用程序試圖刪除具有開放普通I/O或內存映射文件
其他句柄文件的的DeleteFile函數失敗
通常的技巧包括:
- 嘗試關閉該文件上具有句柄的所有進程。對於可執行文件,通常意味着終止其所有實例
- 將文件標記爲在下次重新引導時刪除。正如你所說McAfee要求重新啓動計算機,它可能會使用該選項。 WINAPI函數
MoveFileEx
爲此提供了條款。從MSDN page提取物(強調雷)BOOL WINAPI MoveFileEx( _In_ LPCTSTR lpExistingFileName, _In_opt_ LPCTSTR lpNewFileName, _In_ DWORD dwFlags );
...
lpNewFileName [中,可選]
在本地計算機上的文件或目錄的新名稱。
...
如果dwFlags指定MOVEFILE_DELAY_UNTIL_REBOOT且lpNewFileName爲NULL,則MoveFileEx在系統重新啓動時註冊要刪除的lpExistingFileName文件。
我將此標記爲脫離主題,因爲請求的是非現場資源。這個問題似乎也超出了StackOverflow的範圍。 – erip
對不起。我是新來這個網站 – Mx2002
我甚至不知道如何評論你的評論 – Mx2002