wake-up-neo.net

Nach Windows 10 Update 1803 kann mein Programm keinen Socket öffnen, wenn er von einer Netzwerkfreigabe ausgeführt wird

Ich verwende einige selbst geschriebene Winforms .net 3.5-Anwendungen aus einem freigegebenen Ordner in Windows 10. 

Alles hat richtig funktioniert, aber nach dem letzten großen Update (1803) startet die Anwendung nicht mehr.

Es scheint, dass das Programm in dem Moment abstürzt, in dem versucht wird, einen Socket zu öffnen. Das erste Problem war beim Zugriff auf die Datenbank die folgende Ausnahme:

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()

Ich habe versucht, dieses Problem zu umgehen, aber der Zugriff auf einen SSH-Server funktionierte nicht, wenn das Programm über die Netzwerkfreigabe gestartet wurde:

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()

Wenn ich das Verzeichnis lokal kopiere, funktioniert das Programm gut.

Irgendwelche Ideen, warum es scheint, dass Windows den Zugriff auf Sockets blockiert, wenn ich dieses Programm über eine Netzwerkfreigabe starte?

Ich weiß über das Vertrauen in .NET-Code Bescheid, also kann er von einer Netzwerkfreigabe aus ausgeführt werden, aber ich habe das volle Vertrauen erneuert und stürzt immer noch ab (und normalerweise stürzt es viel früher ab, wenn ich kein volles Vertrauen habe).

5
bernhardrusch

Wir haben einige Informationen zu diesem Problem:

Windows 10 Update 1803 öffnet keine Netzwerkverbindungen unter Ausführbare Dateien auf SMBv1-Freigabe (als Windows Server 2003)

Sie können versuchen, Ihr Programm auf einen SMBv2- oder SMBv3-kompatiblen Server zu verschieben, um es zu überprüfen. 

6
Israel T

Microsoft hat dies am 26. Juni 2018 im kumulativen Update 2018-06 für Windows 10 Version 1803 für x64-basierte Systeme (KB4284848) (OS Build 17134.137) behoben.

Eine der Korrekturen ist relevant:

Behebt ein Problem, bei dem einige Benutzer beim Zugriff auf Dateien oder beim Ausführen von Programmen aus einem freigegebenen Ordner mit dem SMBv1-Protokoll eine Fehlermeldung erhalten. Der Fehler ist "Es wurde ein ungültiges Argument angegeben".

Diese und andere Problemumgehungen werden in folgendem Thema beschrieben:

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

3
flxkid

Ich teste das - wenn der Server nur SMBv1 zulässt (max), kann keine Verbindung aus ausführbaren Dateien von gemeinsam erstellt werden. Wenn SMB v2 ist, funktioniert alles einwandfrei.

1
Dżyszla