在win7浏览器中快速刷新networking共享导致文件操作在这个共享上失败

第一次发布在这里! 我没有内联图片和链接的声望点,抱歉。

简洁版本:

我正在调查用户报告的问题。 他们有批处理脚本,可以快速复制/合并/重命名/压缩/删除networking共享上的文件,有时batch file崩溃,因为它无法find/访问其中一个文件。

当在Windows资源pipe理器中打开共享,并快速打F5这大大增加了错误率。 完全closures资源pipe理器,单独离开文件夹将几乎完全消除问题。

我已经缩小到(可能)在windows7和2008r2上的Windows资源pipe理器或smb2.x问题。 Win8,Win10和2012R2不显示此问题。 我想与社区进行validation,如果这是我的testing方法中的错误,或者确实存在操作系统中的错误。

长版本,重现步骤,经过testing的解决方法:

为了testing这个问题,创build了一个batch file

  • 在里面创build一个随机数的文件
  • 重命名文件4次(例如file.txt – > file.bak – > file.old – > file.txt)
  • 阅读文件的内容并比较数字

这运行在一个无休止的循环,并在没有CPU /内存错误的系统,它永远不会失败。 但它确实 – 有时它根本找不到它应该重命名或读取的文件(例如,它以“无法findfile.old”失败)

这里是一个例子截图:

批处理文件错误
点击放大

为了确保这不是batch file本身的问题,我编写了一个基本上完成相同的小型C#程序。 我可以用这个程序重现问题1:1。

在testing期间,我注意到当我在Windows资源pipe理器中打开目标文件夹时,问题发生的频率比没打开文件夹时要多。 我怀疑与“自动刷新”的关系。 通过“强制”这个条件(F5button),我现在可以很快地重现这个问题。

所以我做了以下testing:serverfault.com/questions/642254/files-not-appearing-caching-or

在win7客户端上禁用浏览器自动刷新设置

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer] "NoRemoteRecursiveEvents"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer] "NoRemoteChangeNotify"=dword:00000001 

这解决了不用触摸键盘时的问题,程序运行了很长时间没有问题。 但只要我手动打开并保持按F5快速刷新浏览器,问题再次出现:

手动刷新
点击放大

我的结论是:探索者的“更新”function会导致“networking”传输或文件locking,共享冲突等问题。

进一步调查:我想找出发生在哪个系统上,所以我在不同的操作系统上进行了很多testing(总是使用F5刷新技巧)。 我只能在win7和2008r2中重现这个问题,win8,10和2012r2没有错误。 我通过在非域join的虚拟机上运行testing来排除公司的安全设置,在家里的私人计算机上也存在这个问题。

唯一需要testing的是SMB版本,所以我禁用了Win7上的SMB2.x(http://support.microsoft.com/de-de/kb/2696547)

  sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb20 start= disabled 

结果:通过在Windows 7上切换到SMB1.5,问题“解决了”(更多的解决方法)。

结论:

在使用SMB2.x时,快速创build/重命名networking共享上的文件,同时刷新资源pipe理器文件夹会导致win7和2008r2上的问题。 切换到SMB 1.5解决问题。 不pipeSMB的版本如何,新的操作系统都不受影响。

我的问题是:

  • 我是否正确地testing,有人可以重现吗? batch file和c#源代码在pastebin链接中。
  • 是Windows资源pipe理器或Win7 / 2008r2越野车上的人民币堆栈? 我应该打开一个MS支持票吗?
  • 是否有任何额外的设置来微调SMB / lanman服务/等可以帮助在这种情况下?

batch file – > pastebin.com/Dc2QHB8y

c#testing程序 – > pastebin.com/Xx11MFdr

系统testing列表 – > pastebin.com/p24Jz0Aw