自从推出Windows 7以来,我们对locking的文件有一个奇怪的问题。
我们有一个VB6程序存储在服务器上。 客户从共享中打开程序,并全天使用。 当我们有更新,我们只是重命名文件,并复制新的。 NT,W2K和XP已经为我们工作了10多年。 自从推出Win 7以来,这已经不再适用了。
如果我打开服务器上的计算机pipe理,并查看打开的文件,它们都处于“打开模式”读取。 如果我使用鬣狗,它看起来有点不同。 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
如果我终止赢7连接,离开XP连接,我可以重命名文件。
这里是服务器端:Windows Server 2003 R2 x64共享权限是读/写NTFS权限是列表/读取/执行
任何帮助将不胜感激。
谢谢。
这是Windows 7/2008 R2中redirect驱动程序缓冲子系统的一个已知问题:
如果应用程序由一个或多个用户运行,则无法在Windows 7或Windows Server 2008 R2中的共享文件夹中重命名应用程序
http://support.microsoft.com/kb/2622136
“考虑以下情况:
一个或多个用户正在运行共享文件夹中的应用程序。
注意应用程序在运行时会打开一个句柄。 您尝试重命名运行Windows 7或Windows Server 2008 R2的计算机上的应用程序。
“在这种情况下,您不能重命名该应用程序。此外,您收到以下错误信息:
该文件正在被另一个进程使用。
笔记
“出现此问题的原因是redirect驱动器缓冲子系统(Rdbss.sys)中有关使用新的oplocks以及处理对远程可执行文件引用的方式所做的更改。
如果您更喜欢rdbss.sys的更新版本,则在此修补程序中可用: