找出谁锁定了网络共享上的文件


141

我想知道谁在锁定网络共享上的文件。

问题出在这里:网络共享位于NAS上,所以我无法登录。我需要一个工具来远程发现谁在锁定文件。每次重新启动NAS是不切实际的,因为有多个用户。

Handle.exe,Process Explorer和PsFile似乎仅限于本地计算机上的文件,因此它们对我不起作用。

Answers:


172

万一有人为基于Windows的系统或NAS寻找解决方案,以防万一:

Windows中有一个内置功能,向您显示本地计算机上的哪些文件被远程计算机打开/锁定(通过文件共享打开文件):

  • 选择“管理计算机”(打开“计算机管理”)
  • 点击“共享文件夹”
  • 选择“打开文件”

您甚至可以在那里强制关闭文件。


10
您甚至可以使用Action-> Connect to another computer to the file on NAS,它甚至可以与我们基于Linux的NAT一起使用!我为什么不早点尝试呢?
olorin

20
在Windows 2008 R2上,转到服务器管理器>角色>文件服务>共享和存储管理>右键单击SaSM>管理打开的文件。
杰森·皮尔斯

只需打开MMC控制台并添加“共享文件夹”管理单元。您可以连接到远程系统。
nizx

2
对于域共享,此操作无效。该措辞似乎暗示文件位于您的网络共享上。
凯文夫

1
我使用一个名为Unlocker的应用程序来执行此操作(该文件位于NAS上)。该应用程序位于:filehippo.com/download_unlocker/tech,它对我有用,但我不能担保该应用程序
Dan

58

在Windows 2008 R2服务器上,您可以通过两种方式查看打开了哪些文件并关闭了这些连接。

通过共享和存储管理

服务器管理器>角色>文件服务>共享和存储管理>右键单击SaSM>管理打开的文件

通过OpenFiles

CMD> Openfiles.exe / query / s服务器名称

请参阅http://technet.microsoft.com/zh-cn/library/bb490961.aspx


2
好答案。我不了解Openfiles。它比必须使用psexec或类似的远程处理工具要好得多。
twasbrillig's

@twasbrillig好的,但是如果它是NAS,而不是基于Windows的话!C:\> Openfiles.exe / query / s 10.0.0.1 <ENTER>错误:目标系统必须运行Windows XP或更高版本。
barlop

值得注意的是,节点“ Roles”等会延迟扩展。
SerG 2014年

对此,openfiles.exe也可以在Windows Server 2012 R2上运行。在如何列出2012年服务器中打开的文件方面,我找不到任何其他好的指南,但这确实有用。
Oldskool 2015年

不错的CMD命令,谢谢分享!Windows 10 Enterprise出厂时就带有Openfiles.exe。
Leo Gurdian

25

PsFile确实可以在远程计算机上工作。如果我的登录帐户已经可以访问远程共享,则可以输入:

psfile \\remote-share

(将“远程共享”替换为文件服务器的名称),它将列出该共享上的每个打开的文档,以及打开该文档的人员,以及如果我要强制关闭文件的文件ID。对我来说,这是一个很长的列表,但是可以通过输入路径的一部分来缩小范围:

psfile \\remote-share I:\\Human_Resources

这有点棘手,因为在我的情况下,此远程共享在我的本地计算机上安装为Z :,但是psfile标识了在远程文件服务器上定义的路径,在我的情况下为I :(您会有所不同) 。我只需要梳理我的第一个psfile运行的结果,以查看它返回的某些路径,然后使用部分路径再次运行它以缩小结果范围。

(可选)如果需要提供访问权限,PsFile将允许您为远程共享指定凭据。

最后,一个鲜为人知的技巧:如果有人单击Windows资源管理器中的文件并剪切或复制该文件以将其粘贴到其他位置,则该行为也会对该文件施加锁定。


应该有双\ s吗?
PsychoData 2014年

@PsychoData,距我发布此文件已有一段时间。希望我发布的内容是正确的。远程共享部分前面的\\看起来正确,但是I:\\ Human_Resources中的\\看起来很奇怪。不过,我认为发布该帖子时我有理由。试试看,让我知道。
鲍达德2014年

14

如果仅是在特定时间(如果您使用的是Windows)知道/查看文件中谁的情况,只需选择文件“视图”作为“详细信息”即可,而不是选择缩略图,图块或图标等。在“详细信息”视图中,默认情况下将显示您;-文件名-大小-类型和-修改日期

您现在需要做的就是右键单击该工具栏上的任何位置(文件名,大小,类型等...),您将获得该工具栏可以显示的其他选项的列表。

选择“所有者”,新列将显示使用该文件的人或最初创建该文件的人的用户名(如果没有其他人在使用该文件)。

当使用共享的MS Access数据库时,这尤其有用。


4
就我而言,这没有用。我添加了该列,并发现自己是远程资源中共享文件的创建者,但是已经被同事锁定。
DavidOlivánUbieto '13

5
这真的只是效果很好,当他们在程序创建将由谁可以拥有一个加锁文件(如MS接入)在用它,该文件的并非原创者
PsychoData

1
要保存添加列,如果您查看文件属性并查看“详细信息”选项卡,则可以看到相同的信息。
Malvineous

这对于MS Word文件之类的东西确实非常有效。
Tridus

5

会话由NAS设备处理。您要问的是取决于NAS设备,与Windows无关。您将不得不查看您的NAS固件,以了解其支持的功能。唯一的其他方法是嗅探数据包并自己解决。


好吧,这是一个常识性的好答案。遗憾的是,该NAS不提供此功能。
olorin

5

部分答案:使用Process Explorer,您可以查看从计算机打开的网络共享上的句柄。

使用菜单“查找句柄”,然后您可以输入如下路径

\Device\LanmanRedirector\server\share\

2

听起来您遇到了我在此处尝试解决的相同问题。就我而言,它是一个Linux文件服务器(当然,正在运行samba),因此我可以登录并查看是什么进程锁定了该文件;不幸的是,我没有找到如何关闭它而不杀死负责任的会议。AFAICT,Windows客户端“认为”它已关闭;但是没有告诉文件服务器。


听起来很可能:据我所知,我们的NAS使用了自定义的Linux发行版。
olorin

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.