如何知道在networking共享上打开了哪个电脑?

环境:

Windows XP sp3,Windows 2003服务器

问题:

我们有数十台自助服务terminal机器,每台机器都有相同的login名,偶尔和简要的共享文件。 费率是几个锁,并释放一分钟。

最近,我们遇到了一个客户端locking一个文件,然后不释放文件。

发生这种情况时我们可以closures文件,但几分钟或更长时间,这是一个不可接受的中断。

未解锁的问题在上个月已经发生好几次了。 我一直在寻找哪个信息亭设备负责locking,并在发生时迅速检测。

我们可以从服务器获得的信息似乎存在差距:

我们可以从各种工具中看到:
– 什么文件打开并locking。 (很多方法)
什么login有一个特定的文件打开或locking。 (很多方法)
– 一台特定的计算机通常打开一个文件。 (共享文件夹,会话mmc)

我们不能看到的是一台特定的计算机有一个特定的文件打开并locking。

任何人都知道一个方法来解决这个问题?

谢谢 –

看看这个免费的小工具( ShareWatch ),我认为它会做你想要的。

列出的function之一:“显示连接到每个共享的用户和计算机以及打开的文件。”

替代文字

input命令行(CMD),

然后input:openfiles /查询networkshare的ip

用户名和密码可能是必需的。

你可以在这里获得更多关于openfiles的信息。

我相信你会想回到Sky100的文章,因为他是正确的,而不是向你提供你所问的,而是提供你需要什么来解决你的问题。 您将需要通过“openfile / query / v”(详细)命令引用locking的ID号码,因为它将为您提供所需的数据。 在给定的列表中search文件名,数据将显示哪个项目具有读和写启用,并随之提供一个特定的ID号码。 不,您可能无法find哪个特定的系统locking了文件,但使用提供的工具,您可以断开该用户与文件的连接。 这是一步一步简化我的ramblings。

1)在具有pipe理员权限的文件服务器上,执行开始>运行> CMD [ENTER]

2)CD桌面[ENTER](你会很快看到为什么。)

3)openfiles / query / v> file.txt [ENTER](这将在桌面上创build一个文件,列出服务器上所有打开的文件。)

4)打开file.txt并search包含文件名和Read + Write权限的行。

5)记下该行的ID号并返回到您的命令控制台。

6)openfiles / disconnect / ID [在这里inputID号码] [ENTER]

只要你在文件服务器上拥有pipe理权限,它就会将该系统与文件断开连接,并假定你的系统是自动的,应该让事情随着需要继续前进。

参考文献:openfiles / query /? openfiles / disconnect /?

如果您需要为您的系统提供一个脚本或程序化的应用程序,请随时发表评论,我将提供联系方式,价格非常低廉,并附带技术支持。 支持我的应用程序。

是你试图解决你所说的问题(即将特定的客户端计算机(而不是用户)映射到locking的文件)还是有一个locking问题,你需要解决?

如果后者有帮助,那么我会看两件事情:

  • 检查你的客户端上安装的AV – 我见过多个客户端AV造成严重的讨厌的exception的共享locking行为。

  • 尝试通过将EnableOpLocksregistry值设置为0来禁用机会locking 。

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0或1默认值:1(启用)

这会降低性能,但不应该破坏任何东西。

我很乐意看到有人真的回答你提出的问题 – 这是一个有趣的问题。

为了解决RobW的问题,并提供了一个替代解决scheme,我没有回答他的问题。

我相信你正在寻找的解决scheme将是在该系统上设置审计策略,然后设置该文件来审计来自该特定用户的任何访问。 执行此操作的步骤可能因您的networking设置而异,所以我将引用您关于如何设置不同系统进行审计的Microsoft TechNet链接。

http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx

设置完成后,请确保通过将用户帐户作为审核员来设置要监控的特定文件,然后就可以开始了。

简单地检查你的安全事件日志,虽然它会列出每个系统(因为他们都使用相同的用户名),应该不难以sorting,并find哪个系统目前有读写权限的文件。

将安全日志设置为每隔几天清除一次可能会很有用。

如果这不起作用,则可能需要根据访问文件的每个主机名称而不是用户名来设置系统。 我相信这是通过Microsoftpipe理控制台实现的。

再说一遍,如果你需要编程,我不是一个商人有兴趣把你的钱花在一些小程序上。 我提供高质量的节目,即使是个人也不会回避。 我希望这可以帮助你解决你的问题。

如果可能,我还会将不同的用户分配到不同的信息亭 – 这可能会帮助您分析其他日志…

如果这是不可能的:可能的解决scheme概述:一个解决scheme可能是运行一个工具,如sysinternals processmonitor与适当的filter(问题文件)在亭(不知道你是否可以隐藏它)。 有一些命令行选项可以将捕获的数据保存到文件中。

从各种信息亭收集这些信息,将它们导入到Excel中,然后查找未closures的信息。

那么使用命令netstat来确定呢?

netstat -an | find ":445" 

这应该给你连接的机器的IP地址。

如果你想要的主机名而不是IP地址,使用

 netstat -a | find "microsoft-ds" 

但是这将需要更长的时间才能执行,特别是在繁忙的文件服务器或域控制器上,因为它将执行大量的主机查找。

另外,请记住,结果将显示入站,出站和空闲侦听端口。

入站连接将在左列中显示:445,出站显示在右列中。

如果不使用-n选项,则可以安全地忽略任何显示“侦听”的结果以及任何仅显示本地IP地址的行(例如0.0.0.0或127.0.0.1)或计算机自己的主机名。

例如:

 Z:\>netstat -an | find ":445" TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 127.0.0.1:445 127.0.0.1:41764 ESTABLISHED TCP 127.0.0.1:445 127.0.0.1:41767 ESTABLISHED TCP 127.0.0.1:41764 127.0.0.1:445 ESTABLISHED TCP 127.0.0.1:41767 127.0.0.1:445 ESTABLISHED TCP 192.168.16.17:445 192.168.16.87:1098 ESTABLISHED TCP 192.168.16.17:18055 192.168.16.24:445 ESTABLISHED TCP 192.168.16.17:20678 192.168.16.24:445 ESTABLISHED UDP 0.0.0.0:445 *:* 

这里唯一连接的主机是192.168.16.87。 到192.168.16.24的连接是出站的。 所有其他连接都是本地连接。

我记得在Windows中有graphics工具来检查使用的共享和locking的文件。

它应该在“计算机pipe理”下的“系统工具”(〜法语翻译…)下,名称为“共享文件夹”。

我知道这是非常古老的,但是ADSI提供了WinNT://接口,它允许您访问LANMANSERVER服务并查询“共享文件夹”mmcpipe理单元中已经公开的属性。 我目前正在研究一种将主机用户链接到打开的文件的方法。

如果是我,我可以访问同一子网上的一台Linux机器…我会在有问题的共享端口的tcpdump到他们正在打开文件的框。

如果你没有unix,你仍然可以使用tcpdump,但你必须安装它。

从Linux …我会做这样的事情:tcpdump -ieth0 -s0 -X主机名端口1234 | grep -i“nameoffile”

我知道大部分的有效负载是二进制的…但是我敢打赌,他们初始头协商身份validation访问文件的钱是明文。

这将向您显示连接到该盒子的每个远端主机,以及在其数据包数据(如果未encryption或以二进制forms)中find的文件名。

祝你好运! 但从我的经验来看,应该使用以下几点:

1)共享文件是一个坏主意! 特别是当远程系统丢失连接或连接速度慢时可能会使文件locking。

2)访问共享文件将导致客户端之间的争用情况。 浪费宝贵的滴答时间。

3)如果您必须使用共享文件…为每个远程站点创build不同的用户名,以便您可以正确debugging。

最好的scheme…摆脱文件并合并到SQL或创build一个Web服务,允许客户端访问文件或数据。

++托德