如何删除正在访问它的程序锁定的文件夹

时间:2016-08-28 20:03:11

标签: c# .net vb.net windows shell

作为程序的一部分(Windows 10 32位中的Visual Studio 2015 vb / c#),我想删除包含通过上下文菜单传递的文件的文件夹。但似乎因为文件名通过命令行参数传递给程序,然后该文件夹被接收它的程序锁定,所以我无法删除它。更具体一点:

  1. 我为注册表添加了一个特定文件类型的密钥(tgz。)所以当我在Windows资源管理器中右键单击该文件时,我会看到启动程序并执行它的命令。一切正常。
  2. 被调用的程序是提取该文件的内容并将其移动到其他位置。然后原始文件夹清空文件。这一切都很好。因此,您将获得一个包含tgz文件的空目录。
  3. 在这个程序的最后,我想删除这个空目录。但是当我尝试这样做时,我得到一个异常" System.IO.IOException:进程无法访问该文件...因为它正由另一个进程使用。"使用LockHunter(免费软件)我看到该文件夹​​被当前程序锁定。因此,在我退出程序之前,我无法删除该文件夹!
  4. 我已经尝试让程序调用另一个例如当它到达需要删除目录的程度时,我改为shell(通过shell或process.start(在两种情况下都没有等待))传递文件夹名称,然后当前程序结束 - 所以锁被删除。第二个程序在循环中运行,试图删除目录。我给它10秒钟尝试在循环中运行,但那也无法删除目录。再次使用LockHunter我看到第二个程序现在正在锁定文件夹。所以回到原点。我还通过自动关闭包含程序开头文件夹的资源管理器窗口来检查锁定文件的Windows资源管理器。

    我已经在这方面苦苦挣扎了几天,并且非常欢迎任何建议!

    谢谢! ZOS

0 个答案:

没有答案