![](/img/trans.png)
[英]Is it possible to delete a file that is opened by a process under 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.