环境:
Windows XP sp3、Windows 2003 服务器
问题:
我们有几十台自助服务终端机器,每台机器都有相同的登录名,它们偶尔会短暂地在共享上创建一个文件。速率是一分钟多锁和释放。
最近,我们遇到了一个客户端独占锁定文件,然后不释放文件。
发生这种情况时,我们可以关闭文件,但会过几分钟或更长时间,这是不可接受的中断。
未释放的锁定问题在上个月发生了几次。我一直在寻找负责锁定的信息亭设备,并在它发生时快速检测到它。
我们可以从服务器获得的信息似乎存在差距:
我们可以从各种工具中看到: -
哪些文件是打开和锁定的。(多种方式) -
什么登录有一个特定的文件打开或锁定。(多种方式)
- 特定计算机通常打开文件。(共享文件夹、会话 mmc)
我们看不到的是特定计算机打开并锁定了特定文件。
任何人都知道如何做到这一点?
谢谢 -
抢
查看这个免费的小工具(ShareWatch),我认为它会满足您的需求。
列出的功能之一:“显示连接到每个共享的用户和计算机,以及打开的文件。”
输入命令行(CMD),
然后输入:openfiles /query ip of the networkshare
并且可能需要用户名和密码。
您可以在此处获取有关 openfiles 的更多信息。
我相信您会想要参考 Sky100 的帖子,因为他是正确的,不是为您提供您所要求的内容,而是为您提供解决问题所需的内容。您需要通过“openfile /query /v”(详细)命令引用锁定的 ID 号,因为它会为您提供所需的数据。在给定列表中搜索文件名,数据将显示哪个项目已启用读写,并提供特定的 ID 号。不,您可能无法找到锁定文件的特定系统,但使用提供的工具,您可以断开该用户与文件的连接。这是简化我的杂谈的一步一步。
1) 在具有管理员权限的文件服务器上,执行 Start > Run > CMD [ENTER]
2) CD Desktop [ENTER](你很快就会明白为什么。)
3) openfiles /query /v > file.txt [ENTER](这将在桌面上创建一个文件,其中包含服务器上所有打开文件的列表。)
4) 打开 file.txt 并搜索包含您的文件名和读取 + 写入权限的行。
5) 记下该行的 ID 号,然后返回您的命令控制台。
6) openfiles /disconnect /ID [在此处输入 ID 号] [ENTER]
只要您在文件服务器上拥有管理权限,它就会将该系统与文件断开连接,并假设您的系统是自动化的,应该允许事情根据需要继续进行。
参考:openfiles /query /? 打开文件/断开连接/?
如果您需要适合您的系统的脚本或编程应用程序,请随时发表评论,我将提供联系信息,价格非常低,技术也很好。支持我的申请。
您要解决的问题是您陈述的问题(即将特定的客户端计算机(而非用户)映射到锁定的文件)还是存在需要解决的锁定问题?
如果后者有帮助,那么我会考虑两件事:
检查安装在您的客户端上的 AV - 我已经看到多个客户端 AV 在共享上导致严重讨厌的异常锁定行为。
尝试通过将 EnableOpLocks 注册表值设置为 0 来禁用机会锁定。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters EnableOplocks REG_DWORD 0 或 1 默认值:1(启用)
这会在一定程度上降低性能,但不应该破坏任何东西。
我很乐意看到有人真正回答你提出的问题——这是一个有趣的问题。
在我尝试解决 RobW 的问题并提供替代解决方案时,我没有回答他的问题。
我相信您正在寻找的解决方案是在该系统上设置审核策略,然后设置该文件以审核来自该特定用户的任何访问。执行此操作的步骤可能因您的网络设置而异,因此我将向您推荐 microsoft 的 technet 链接,了解如何设置不同的系统进行审核。
http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx
设置完成后,确保通过将用户帐户附加为审核员来设置您希望监控的特定文件,您应该准备好了。
以后只需检查您的安全事件日志,虽然它会列出每个系统(因为它们都使用相同的用户名),但应该不难分类并找到当前对文件具有读写访问权限的系统。
将安全日志设置为每隔几天清除一次可能会很有用。
如果这不起作用,您可能需要根据访问文件的每个主机名而不是用户名来设置系统。我相信这是通过 Microsoft 管理控制台实现的。
同样,如果您需要编程,我不是一个有兴趣为一些小程序花大量钱的商人。我以即使是个人也不会回避的价格提供高质量的节目。我希望这可以帮助您解决问题。
在现代 Windows 系统上,
将为此做的伎俩。您将获得本地文件路径、客户端计算机的 IP 或主机名,以及打开文件的 AD 用户。
如果可能的话,我还会将不同的用户分配到不同的信息亭 - 它可能会帮助您分析其他日志......
如果这不可能: 可能的解决方案概述:解决方案可能是在信息亭上运行带有适当过滤器(针对相关文件)的 sysinternals processmonitor 之类的工具(不知道是否可以隐藏它)。您可以使用一些命令行选项将捕获的数据保存到文件中。
从各种信息亭收集这些信息,将它们导入到 Excel 中,然后查找未关闭的信息亭...
使用命令 netstat 来确定这一点怎么样?
这应该为您提供所连接机器的 IP 地址。
如果您想要主机名而不是 IP 地址,请使用
然而,这将需要更长的时间来执行,尤其是在繁忙的文件服务器或域控制器上,因为它需要执行大量的主机查找。
此外,请记住,结果将显示入站、出站和空闲侦听端口。
入站连接将在左栏中显示:445,出站将在右栏中显示。
如果您不使用 -n 选项,您可以放心地忽略任何显示“LISTENING”的结果以及任何仅显示本地 IP 地址(例如 0.0.0.0 或 127.0.0.1)或计算机拥有的主机名的行。
例如:
这里唯一连接的主机是 192.168.16.87。到 192.168.16.24 的连接是出站的。所有其他连接都是本地连接。
我记得 Windows 中有一个图形工具可以检查使用过的共享和锁定的文件。
它应该在“计算机管理”下的“系统工具”中(〜从法语翻译...),名称为“共享文件夹”。
我知道这已经很老了,但是 ADSI 提供了 WinNT:// 接口,它允许您访问 LANMANSERVER 服务并查询已经在“共享文件夹”mmc 管理单元中公开的属性。我目前正在研究一种将主机和用户链接到打开文件的方法。