释放Windows文件共享锁

时间:2008-11-26 09:18:14

标签: windows file locking share

这个问题不时出现在工作中。我们的构建机器可以通过普通的Windows文件共享访问它的文件。如果有人在机器上远程浏览文件夹,并在一夜之间打开窗口,那么构建失败(就像现在一样)。资源管理器窗口在源树中的一个子文件夹上打开了点。构建删除源,并在构建之前执行干净的检出。删除失败。

现在,我想让构建工作。我是从家里登录的,我宁愿不重新启动构建机器。我无法抓住机器正在寻找的人和文件,我无法远程重启他们的机器。

当一个Windows共享有一个锁时,锁定进程就是系统,所以我认为我不能像正常锁一样杀死它。

有没有人知道如何在不重启机器的情况下释放共享文件夹上的锁?

6 个答案:

答案 0 :(得分:24)

找到解决方案。

  1. 使用Process Explorer

    查找流程
    1. 下载并解压缩procexp.exe
    2. 在Process Explorer中,使用“查找”菜单中的“查找句柄或DLL ...”命令
    3. 输入无法删除
    4. 的目录名称
    5. 应显示与该名称匹配的打开文件列表。进行一些猜测,找出哪一个未被删除。如果文件被Windows共享锁定,则保存该文件的进程将为System
    6. 记下打开的目录
  2. 下载并安装解锁器(警告:删除链接,因为它包含恶意软件)

    1. 安装解锁器,禁用资源管理器扩展和其他垃圾的选项
  3. 解锁目录

    1. 打开cmd窗口,然后导航到C:\ Program Files \ Unlocker
    2. 从cmd窗口运行Unlocker.exe“the-path-to-the-locked-folder”
    3. 将弹出一个确认锁定释放的对话框。使用解锁按钮解锁文件
  4. 现在该目录应该被解锁,现在可以删除。

答案 1 :(得分:24)

如果您是通过网络共享文件的服务器上的管理员,则可以使用Windows内置功能:

  1. 开始→我的电脑→右键单击→管理可转到计算机 管理控制台
  2. 在左侧导航栏中,导航至“系统工具”→“共享文件夹”
  3. 您可以查看分享,会话和&在这里打开文件。这允许您找出谁从哪个工作站打开了哪些文件。
  4. 右键单击列表中的项目,以便能够删除文件锁定。
  5. 希望这有帮助。

答案 2 :(得分:4)

尝试Process Hacker: https://wj32.org/processhacker/

进程黑客就像类固醇上的Process Explorer一样。

查找违规进程,请按CTRL + F或单击“查找DLL句柄”按钮并搜索文件名。

在查找句柄对话框中找到该文件后,您只需右键单击该文件并选择“关闭”即可。 (至少对于v2.39.124)

旧版本在流程的上下文菜单中有一个“终止符”选项。  右键点击违规流程 - > Miscellaneous - > Terminator - > 选择终止技术。请注意,有些可能是危险的,可能会产生意想不到的后果。

答案 3 :(得分:1)

我遇到了类似的问题,我上面看到的这些建议都不适合自动夜间版本(正如原始海报所暗示的那样),因为它们都需要手动搜索并杀死锁。

我尝试过的唯一可靠的方法是删除共享本身,进行构建,然后再添加共享。以下是自动删除共享的一种方法:

D:\ Projects> net share Projects / DELETE / Y

用户在Projects上打开了文件。继续操作将强制关闭文件。

项目已成功删除。

(注意:如果您需要提供的权限组很乱,则自动再次创建共享可能会很麻烦。)

答案 4 :(得分:0)

另一种选择是,从Windows Vista开始,使用系统内置的Windows工具:

监控资源:perfmon.exe /res

摘自:Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

答案 5 :(得分:0)

我这样做的方法是同时使用OpenFiles.exeHandle.exe 您可以按任何顺序运行它们,您将完全释放资源。

OpenFiles:断开文件共享会话

Handle.exe:释放所有打开的句柄(不要尝试关闭属于pid4的句柄,因为这是系统进程)

您可以使用Powershell,批处理或您选择的任何语言来自动执行此操作。