Windows 7 客户端正在锁定文件

Windows 7 客户端正在锁定文件

自从推出 Windows 7 以来,我们就遇到了锁定文件的奇怪问题。

我们在服务器上存储了一个 VB6 程序。客户端从共享中打开该程序,并整天使用它。当我们有更新时,我们只需重命名文件并复制新文件即可。在 NT、W2K 和 XP 中,这种方法已经为我们工作了 10 多年。自从推出 Win 7 以来,这种方法不再有效。

如果我打开服务器上的计算机管理并查看打开的文件,它们都处于“打开模式”读取。如果我使用 Hyena,它看起来有点不同。XP 客户端处于“打开模式”执行,而 Win 7 客户端处于“打开模式”读取。如果我尝试重命名文件,我会收到共享违规:

Desired Access:  Read Attributes, Delete, Synchronize 
Disposition:     Open 
Options:         Complete If Oplocked, Open Reparse Point 
Attributes:      n/a 
ShareMode:       Read, Write, Delete 
AllocationSize:  n/a 
Impersonating:   xxx\yyyyyy

如果我终止 Win 7 连接,保留 XP 连接,我就可以重命名该文件。

这是服务器端:Windows Server 2003 R2 x64 共享权限为读/写 NTFS 权限为列出/读取/执行

任何帮助将不胜感激。

谢谢。

答案1

这是 Windows 7/2008 R2 中重定向驱动程序缓冲子系统的已知问题:

如果应用程序正在由一个或多个用户运行,则无法重命名 Windows 7 或 Windows Server 2008 R2 中共享文件夹中的应用程序
http://support.microsoft.com/kb/2622136

“考虑以下场景:

  • 一个或多个用户正在运行共享文件夹中的应用程序。

  • 注意:应用程序在运行时会打开指向自身的句柄。您尝试在运行 Windows 7 或 Windows Server 2008 R2 的计算机上重命名该应用程序。

“在这种情况下,您无法重命名该应用程序。此外,您还会收到以下错误消息:

该文件正在被另一个进程使用。

笔记

  • 所有用户关闭应用程序后,您仍可成功执行相同的操作。
  • 在运行 Windows XP 的计算机上不会发生此问题。

“出现此问题的原因是重定向驱动器缓冲子系统 (Rdbss.sys) 对新 oplock 的使用以及处理对远程可执行文件的引用的方式进行了更改。”


如果您更喜欢 rdbss.sys 的较新版本,可以在此修补程序中获取:

http://support.microsoft.com/kb/2687753

相关内容