在Windows 10更新1803之后,我的程序在从网络共享运行时无法打开套接字

我正在从Windows 10中的共享文件夹运行一些自编写的Winforms .net 3.5应用程序。

一切正常,但在最后一次大更新(1803)后,应用程序不再启动。

似乎程序在尝试打开套接字时崩溃了。 第一个问题是访问数据库时遇到以下exception:

2018-05-03 14:36:32,314 [1] ERROR NHibernate.Transaction.AdoTransaction [(null)] - Begin transaction failed MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts. ---> System.Net.Sockets.SocketException: invalid argument at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) at MySql.Data.Common.MyNetworkStream.CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, Boolean unix) at MySql.Data.Common.MyNetworkStream.CreateStream(MySqlConnectionStringBuilder settings, Boolean unix) at MySql.Data.Common.StreamCreator.GetStream(MySqlConnectionStringBuilder settings) at MySql.Data.MySqlClient.NativeDriver.Open() 

我试图解决这个问题,但是当从网络共享启动程序时,甚至访问SSH服务器也不起作用:

 2018-05-03 14:30:30,654 [1] ERROR WinForms.SpringApplication [(null)] - Main Handler Tamir.SharpSsh.jsch.JSchException: System.Net.Sockets.SocketException: invalid argument at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) at Tamir.SharpSsh.java.net.Socket..ctor(String host, Int32 port) at Tamir.SharpSsh.jsch.Util.createSocket(String host, Int32 port, Int32 timeout) bei Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout) bei Tamir.SharpSsh.SshBase.ConnectSession(Int32 tcpPort) bei Tamir.SharpSsh.SshBase.Connect(Int32 tcpPort) bei Tamir.SharpSsh.SshBase.Connect() 

当我在本地复制目录时,程序运行正常。

当我从网络共享启动这个程序时,为什么Windows阻止访问套接字的任何想法?

我知道信任.net代码,所以它可以从网络共享运行,但我已经更新了完全信任并且它仍然崩溃(如果我没有完全信任,通常它会更早崩溃)。

我们有一些关于此问题的信息:

Windows 10更新1803无法打开SMBv1共享上的可执行文件的网络连接(作为Windows Server 2003)

您可以尝试将程序移动到SMBv2或SMBv3兼容服务器进行检查。

Microsoft于2018年6月26日在基于x64的系统的Windows 10版本1803累积更新(KB4284848) (OS Build 17134.137)中修复了此问题。

其中一个修复是相关的:

解决了使用SMBv1协议访问文件或从共享文件夹运行程序时某些用户可能收到错误的问题。 错误是“提供了无效参数”。

这个和其他解决方法在以下讨论:

https://blog.mertech.com/windows-10-version-1803-breaks-some-shared-folder-applications

我测试了这个 – 如果服务器只允许SMBv1(最大),则无法从共享的可执行文件创建任何连接。 如果SMB是v2,一切正常。