从网络共享打开时随机应用程序失败,错误 0xc0000006

从网络共享打开时随机应用程序失败,错误 0xc0000006

我们有一个在 Windows 2012 R2 上运行的应用程序,它访问在 2016 R2 上运行的文件共享,并Winscp从那里执行。该应用程序使用服务帐户启动它,并且大多数时候它都能正常工作。然而,它随机地无法启动文件exe,导致所有作业失败。一旦失败,则所有后续打开(无论是用户还是应用程序)都会失败,并出现网络错误,如下所示这里。这是从事件查看器中获取的。

但可以确认没有网络错误,因为我们可以浏览文件共享,打开其他文件等。

解决方法是终止所有现有winscp进程。一旦所有其他会话都被终止,它就可以打开文件。所以我procmon在它失败时和正常工作时运行了它。我使用 excel 比较了它们,输出是这里。显示为NETWORK ERROR,但好像不是这样的。

即使遇到此问题,如果 exe 位于本地机器上,我们仍然能够打开。

我注意到一件有趣的事情关联:但是,在我们的案例中,它是使用同一个帐户打开的,并且我们没有注销。但不确定它是在文件共享中登录还是在应用服务器中登录。另外,我们谈论的不是任何 RDS 服务器。所以我不确定它是否相关。

所以我怀疑是某些东西锁定了 exe 文件,从而导致了错误,这也解释了为什么我们终止所有现有会话后它仍然有效。在这种情况下,我有什么选择呢?

答案1

对于那些面临此问题的人来说,这似乎是 SMBv3 的问题。我在客户端计算机上禁用了 SMBv3,并强制它使用 SMBv1,然后删除了机会锁如下:

Set-smbclientconfiguration -oplocksdisabled $true

Set-smbclientconfiguration -useopportunisticlocking $false

我这样做已经 10 天了,我再也没有遇到过这个问题。然而,不建议在生产环境中使用 SMBv1,所以将我的可执行文件移到本地机器,并相应地更改脚本。

相关内容