簡體   English   中英

如何確定在Windows下刪除文件(文件鎖定問題)?

[英]How to delete a file for sure under windows (problem with file locks)?

有沒有辦法刪除Windows XP,NTFS文件系統下的文件,即使該文件上有鎖?

我想移動/刪除其他進程(例如病毒掃描鎖定文件)時遇到問題。

感謝您的提示!

MoveFileEx允許您傳遞MOVEFILE_DELAY_UNTIL_REBOOT,這將導致文件在下次重新引導時被移動/刪除。 除此之外,您還必須查找/殺死當前已鎖定文件的其他進程,這可能是不可能的,並且對於大多數程序而言,這幾乎肯定不是理想的行為。

如果在嘗試刪除文件時將其鎖定,則刪除將失敗。 如果您需要刪除文件,則需要進行任何鎖定以釋放該鎖定。

這就是全部。 這里沒有捷徑。

如果我沒記錯的話,可以下載一個名為Open Handles的Microsoft程序,該程序將告訴您哪個進程正在鎖定特定文件。 然后,您只需終止該進程即可解鎖文件,以便將其刪除。 如果文件被核心操作系統進程鎖定,則無法使用,但如果文件被病毒掃描程序鎖定,則可以正常運行。

我想如果您要嘗試以編程方式而不是手動方式執行此操作,則需要使程序調用oh.exe並相應地處理其輸出。 然后使用Windows API(據我所知, TerminateProcess是適當的功能) TerminateProcess相關進程,然后嘗試再次刪除該文件。

如果您絕對需要在繼續之前刪除文件,則可以執行以下操作:

#include <stdio.h>
...
while(remove("myfile.txt" ) != 0)
   // Error deleting file. Wait a little before trying again.
   Sleep(100);

循環之后,您完全可以確定該文件已成功刪除。
您可以使用一些“嘗試計數器”退出循環,以免永遠等待;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM