有没有办法在windows xp,ntfs文件系统下删除一个文件,即使这个文件有locking?
有其他进程的问题,如病毒扫描locking文件,我想移动/删除。
感谢任何提示!
MoveFileEx允许您传递MOVEFILE_DELAY_UNTIL_REBOOT,这将导致文件在下一次重新启动时被移动/删除。 除此之外,你必须找到/杀死当前锁定文件的其他进程,这可能是不可能的,对于大多数程序来说,几乎肯定不是所希望的行为。
如果文件在您尝试删除时被锁定,则删除将失败。 如果你需要删除文件,那么你需要锁定它来释放锁。
这就是它的全部。 这里没有捷径。
如果我记得正确的话,有一个名为Open Handles的微软程序,你可以下载它来告诉你哪个进程正在锁定一个特定的文件。 然后你只需要杀死这个进程就可以解锁这个文件,这样你就可以删除它了。 如果文件被核心操作系统进程锁定,则不起作用,但如果被病毒扫描程序锁定,则应该正常工作。
我想如果你想以编程方式而不是手动方式来完成这个工作,你需要让你的程序调用oh.exe并相应地处理它的输出。 然后杀死相关的进程使用Windows API(就我所知, TerminateProcess
是适当的功能),并尝试再次删除文件。
如果您在继续之前绝对需要删除文件,您可以执行以下操作:
#include <stdio.h> ... while(remove("myfile.txt" ) != 0) // Error deleting file. Wait a little before trying again. Sleep(100);
循环后,你绝对确信该文件被成功删除。
你可以使用一些“试图计数器”退出循环,而不是永远等待;)