40

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

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

当windows共享有锁时,锁定过程是系统,所以我不认为我可以像普通锁一样杀死它。

有谁知道无需重新启动机器即可释放共享文件夹锁定的方法?

4

6 回答 6

36

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

  1. 开始 → 我的电脑 → 右键单击​​ → 管理将您带到计算机管理控制台
  2. 在左侧导航中,导航到系统工具 → 共享文件夹
  3. 您可以在此处查看共享、会话和打开的文件。这使您可以找出谁从哪些工作站打开了哪些文件。
  4. 右键单击列表中的某个项目可以解除文件锁定。

希望这可以帮助。

于 2014-04-18T06:35:26.747 回答
24

找到了解决方案。

  1. 使用Process Explorer查找进程:

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

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

    1. 打开一个 cmd 窗口,然后导航到 C:\Program Files\Unlocker
    2. 在 cmd 窗口中,运行 Unlocker.exe “the-path-to-the-locked-folder”
    3. 将弹出一个对话框,确认锁定释放。使用解锁按钮解锁文件

现在该目录应该已解锁,现在可以删除了。

于 2008-11-26T09:39:53.237 回答
6

尝试进程黑客: https ://wj32.org/processhacker/

进程黑客就像打了兴奋剂的进程资源管理器。

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

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

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

于 2015-12-22T22:18:33.577 回答
2

我遇到过类似的问题,而且我在上面看到的这些建议都不适合自动化的夜间构建(正如原始海报所暗示的那样),因为它们都需要手动来寻找并杀死锁。

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

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

用户在项目上有打开的文件。继续操作将强制关闭文件。

项目已成功删除。

(注意:如果您需要为其授予的权限组很混乱,那么再次自动创建共享可能会很痛苦。)

于 2016-02-03T16:50:37.937 回答
2

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

OpenFiles:断开文件共享会话

Handle.exe:释放任何打开的句柄(不要试图关闭属于pid4的句柄,因为那是系统进程)

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

于 2019-02-14T08:50:27.950 回答
0

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

监控资源:perfmon.exe /res

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

于 2017-06-04T14:40:14.417 回答