如何删除其他进程已打开的文件夹?

时间:2010-10-25 11:55:58

标签: delphi

我创建了两个服务。我想删除一个文件夹,但我的第一个服务使用该文件夹。当我执行第一个服务后,我执行第二个服务,它工作正常。但是,当我尝试同时执行这两项服务时,它无法正常工作。

3 个答案:

答案 0 :(得分:5)

实际上,问题应该是“应用程序中的内容可能阻止其他应用程序删除文件夹”。

可能性是:

  1. 您的服务会在该文件夹中打开一些文件,但不会将其关闭。检查您在服务中打开的所有文件,并关闭该文件夹中的文件 文件的关闭方式取决于文件的打开方式。如果您使用CreateFile(),则使用CloseHandle()关闭。如果它是TFileStream,那么只需销毁它。

  2. 您的服务已将该文件夹设置为当前目录。使用SetCurrentDir选择其他目录作为当前目录。

答案 1 :(得分:1)

你不能删除它,除非你可以通过发送邮件告诉其他服务停止使用该文件夹(或其内容),然后再删除它。

答案 2 :(得分:0)

如果在第二次服务之前启动第一项服务,则可以删除文件夹,但如果两种服务一起启动,则无法删除文件夹。

唯一的区别是您允许第一次服务完成文件夹的时间。

需要考虑的事项:

如果您的第一个服务正在使用该文件夹,那么在您的服务关闭与该文件夹的连接之前,您将无法将其删除。