我想知道谁锁定了网络共享上的文件。
问题是:网络共享位于 NAS 上,所以我无法登录。我需要一个工具来远程找出谁锁定了文件。每次都重新启动 NAS 不太现实,因为有多个用户。
Handle.exe、Process Explorer 和 PsFile 似乎仅限于本地计算机上的文件,因此它们对我不起作用。
以防万一有人为基于 Windows 的系统或 NAS 寻找解决方案:
Windows 中有一个内置功能,可以显示本地计算机上的哪些文件被远程计算机(通过文件共享打开文件)打开/锁定:
您甚至可以强制关闭文件。
在 Windows 2008 R2 服务器上,您有两种方法查看打开的文件和关闭这些连接。
通过共享和存储管理
服务器管理器 > 角色 > 文件服务 > 共享和存储管理 > 右键单击 SaSM > 管理打开文件
通过 OpenFiles
CMD > Openfiles.exe /query /s 服务器名称
请参阅 http://technet.microsoft.com/en-us/library/bb490961.aspx。
PsFile 可以在远程计算机上运行。如果我的登录帐户已经可以访问远程共享,我只需输入:
psfile \\remote-share
(将“remote-share”替换为文件服务器的名称),它将列出该共享上每个打开的文档,以及谁打开了该文档,以及文件 ID(如果我想强制关闭文件)。对我来说,这是一个非常长的列表,但可以通过输入路径的一部分来缩小范围:
psfile \\remote-share I:\\Human_Resources
这有点棘手,因为在我的情况下,此远程共享在我的本地计算机上安装为 Z: ,但 psfile 识别远程文件服务器上定义的路径,在我的情况下是 I: (你的会有所不同)。我只需梳理第一次 psfile 运行的结果以查看它返回的一些路径,然后使用部分路径再次运行它以缩小结果范围。
如果您需要提供访问权限,PsFile 将允许您指定远程共享的凭据。
最后,一个鲜为人知的提示:如果有人单击 Windows 资源管理器中的文件并剪切或复制该文件并意图将其粘贴到其他位置,该行为也会对该文件设置锁定。
如果只是在任何特定时间了解/查看文件中的人员(并且如果您使用的是 Windows),只需选择文件“查看”作为“详细信息”,即而不是缩略图、图块或图标等。进入“详细信息”视图后,默认情况下将显示您; - 文件名 - 尺寸 - 类型,以及 - 修改日期
您现在需要做的就是右键单击所述工具栏上的任意位置(文件名、大小、类型等...),您将看到工具栏可以显示的其他选项的列表。
选择“所有者”,新列将显示使用该文件的人的用户名,或者如果没有其他人使用该文件,则最初创建该文件的人的用户名。
这在使用共享 MS Access 数据库时特别有用。
会话由 NAS 设备处理。你问的问题取决于NAS设备,与Windows无关。您必须查看 NAS 固件才能了解它支持什么。唯一的其他方法是嗅探数据包并自己解决。
部分答案:使用 Process Explorer,您可以查看网络共享上的句柄从您的计算机打开。
使用菜单“查找句柄”,然后您可以输入这样的路径
\Device\LanmanRedirector\server\share\
听起来你有同样的问题,我试图解决这里。就我而言,它是一个 Linux 文件服务器(当然运行 samba),因此我可以登录并查看哪个进程正在锁定文件;不幸的是,我还没有找到如何在不终止负责会话的情况下关闭它。 AFAICT,Windows 客户端“认为”它已关闭;但没有费心告诉文件服务器。
关闭文件
e:\gestion\yourfile.dat
,由任何用户打开(/a *
)
openfiles /disconnect /a * /op "e:\gestion\yourfile.dat"
如果您想知道谁正在使用服务器上的文件和文件夹..(即不一定与文件共享相关)
微软有这个handle.exe工具:
https://learn.microsoft.com/en-us/sysinternals/downloads/handle
您必须拥有服务器的管理员访问权限才能使用此功能。