Користувачі стали скаржитися, що після поновлення до Windows 10 1803 (April Update) на їх комп'ютерах виникла проблема з запуском додатків, що виконуються exe файли яких розташовані в мережевих папках на файловому Windows сервері і окремому NAS сховище.
Проблема проявляється по-різному. Деякі мережеві додатки просто не запускаються з мережевих папок (помилки The application was unable to start correctly (0xc00000ba), Exception thrown at 0x00007FFA2B86624E, 0xC0000005: Access violation reading location 0x0000000000000000), а інші запускаються нормально, але в них не працює весь функціонал, пов'язаний з установкою будь-яких мережевих з'єднань з іншими серверами. Зокрема, не працює підключення до віддаленого сервера SQL як через ODBC, так і ADO SQL підключення, не вдалося підключитися клієнт також і до БД на Oracle.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (Provider: SQL Network Interfaces, error: 26 - Error Locating Server / Instance Specified).Проблема спостерігається як при запуску EXE файлів з мережевих папок по UNC шляху (\\ msk-server \ share1 \ app.exe), так і при запуску файлів з мережевих папок, змонтованих в диск за допомогою NET USE.
При цьому ті ж самі програми в мережевих папках в Windows 10 1709 і Windows Server 2016 запускаються нормально. Також ці програми працюють і в Windows 10 1803, якщо скопіювати виконуваний файл з мережевого каталогу на локальний диск. Якщо видалити з комп'ютера Windows 10 1803, то проблема також пропадає.
Таке відчуття, що Windows 10 1803 блокує мережевий доступ програмам, запущених з мережевих папок, а самі програми при цьому падають при спробі відкрити мережевий сокет. Проблема частково схожа з проблемою відключення небезпечних гостьових входів в Windows 10 1709, проте це рішення не допомогло.
Один з користувачів знайшов наступне обхідний рішення: якщо у властивостях exe файлу виставити режим сумісності з Windows 8, то мережеві програми починають працювати!
Однак, як постійне рішення його використовувати неправильно. Хотілося б знайти причину проблеми.
В процесі діагностики проблеми виявилося, що у всіх випадках в якості мережевої папки використовувалися пристрої, які підтримують протокол доступу до файлів SMB v1 (На робочих станціях користувача в Windows 10 був включений компонент для доступу до мережевих папок по протоколу SMB 1.0 - SMB 1.0 / CIFS Client).
У тому випадку, якщо перемістити виконуваний файли на Windows Server 2012 R2 / 2016, на яких відключений протокол SMB 1, виконувані файли починають запускатися коректно!
Тобто Windows 10 update 1803 з міркувань безпеки не дозволяє відкривати мережеві підключення програмами, запущеним з мережевих папок, які доступні тільки по протоколу SMBv1. Як мережевих папок потрібно використовувати пристрої з підтримкою SMBv2 або SMBv3.
Примітка. Нагадаємо, що при взаємодії клієнта і сервера по протоколу SMB для взаємодії вибирається максимальна версія протоколу, яка одночасно підтримується і клієнтом і сервером (див. Статтю Версії протоколу SMB в Windows). Ви можете визначити версію SMB, за допомогою якої ваш клієнт підключається до файловому серверу можн допомогою команди PowerShellGet-SmbConnection
.Перевірте, чи включений SMBv2 або SMBv3 на вашому сервері за допомогою команди:
Get-SmbServerConfiguration | Select EnableSMB2Protocol
Якщо SMBv2 відключений, його можна включити:
Set-SmbServerConfiguration -EnableSMB2Protocol $ true
Як виявилося, що використовується NAS сховище також підтримує загальний доступ до файлів тільки по протоколу SMBv1, таким чином його можна використовуватися для запуску програм на робочих станціях, оновлених до Windows 10 1803.
У тому випадку, якщо ви використовуєте в якості файлового сервера Windows Server 2003, то в цій версії підтримується тільки версія SMBv1. Відповідно, ви не можете використовувати цю ОС як файловий сервер при доступі до нього з Windows 10 1803 і вище.
Також якщо ви використовуєте в якості файлового сервера Linux з Samba, щоб відключити SMB1, потрібно в файлі конфігурації smb.conf
в секції [Global]
додати рядок min protocol = SMB2
і перезапустити Samba.