繁体   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