如何删除另一个进程已打开的文件夹?

问题描述:

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

+3

(-1)请问一个正确的问题,目前无法找出你想要做的事情。另外,我会冒昧减少问题中问号的数量:) – 2010-10-25 11:58:26

+0

@Pekka:也许问号是问题主题的一部分? (种文件系统占位符)。 ;-) – splash 2010-10-25 12:02:03

+0

@splash ahaha,谁知道! :) – 2010-10-25 12:02:25

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

可能性是:

  1. 你的服务打开某些文件,该文件夹中,并没有将其关闭。检查您在服务中打开的所有文件,并关闭该文件夹中的文件。
    文件如何关闭取决于它们是如何打开的。如果你使用CreateFile(),那么用CloseHandle()关闭。如果是TFileStream,那么只需销毁它。

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

+1

然后标题中问题的答案是:你不能,至少不能在Windows下。 (例如,Linux允许删除正在使用的文件和文件夹,如果您不习惯这些文件和文件夹可能很烦人。) – dummzeuch 2010-10-26 07:15:51

+0

@himself - Number 2不起作用。我试过了。 – Ampere 2013-12-13 16:12:35

除非您可以通过发送消息来停止使用文件夹(或其内容),否则在删除它之前您无法删除它。

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

唯一的区别是您允许第一个服务完成与文件夹一起工作的时间。

需要考虑的事情:

如果你的第一个服务使用的文件夹,那么你将不能够像已经提到的,直到你的服务关闭与该文件夹的连接将其删除。