Наша компания разработала новое приложение для Windows для подключения к базе данных SQL. Когда приложение запускается вне среды домена, оно работает отлично. Когда компьютер, на котором он запущен, подключается к домену, приложение сразу вылетает.
Я обнаружил пару ошибок, которые, как мне кажется, могут указывать на проблему, но я не уверен, как их точно интерпретировать или что может мешать работе программы. Я не считаю, что это проблема с брандмауэром, поскольку программа отлично работает, когда компьютер находится вне домена. Я просмотрел все настройки групповой политики, и, похоже, там нет ничего, что могло бы препятствовать работе приложения, хотя это кажется вероятным виновником с учетом обстоятельств.
Вот ошибки:
Журнал приложений
Faulting application name: WcBc.UWP.exe, version: 1.0.0.0, time stamp: 0x5e1b7efb
Faulting module name: ntdll.dll, version: 10.0.18362.418, time stamp: 0x99ca0526
Exception code: 0xc0000005
Fault offset: 0x000000000001792d
Faulting process id: 0x5e2c
Faulting application start time: 0x01d5cd738a0fa05b
Faulting application path: C:\Program Files\WindowsApps\WcBc_6.0.3.0_x64__x092f3jx59vf4\WcBc.UWP.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: fc0e2bd5-9704-4ad2-b601-b61c8bfd53a7
Faulting package full name: WcBc_6.0.3.0_x64__x092f3jx59vf4
Faulting package-relative application ID: App
Журнал безопасности
The Windows Filtering Platform has blocked a packet.
Application Information:
Process ID: 24108
Application Name: \device\harddiskvolume3\program files\windowsapps\wcbc_6.0.3.0_x64__x092f3jx59vf4\wcbc.uwp.exe
Network Information:
Direction: Outbound
Source Address: 10.80.243.64
Source Port: 58988
Destination Address: 10.101.10.18
Destination Port: 4118
Protocol: 6
Filter Information:
Filter Run-Time ID: 71531
Layer Name: Connect
Layer Run-Time ID: 48
Разработчики должны иметь возможность сказать вам, где именно происходит сбой, но я предполагаю, что это безопасность папки в WindowsApps. Попробуйте запустить приложение с повышенными правами и посмотрите, работает ли оно.
Если да, то я бы сказал, что приложение разработано неправильно, поскольку пользователи обычно не могут писать в Program Files, но могут в ProgramData, где должны быть сохранены любые данные, созданные приложением.
Если нет, предоставьте им доступ к вашей среде, чтобы они могли протестировать ее в вашей среде и отладить, или попросите их записать подробный журнал в файл, который поможет в анализе.
PS, если можете, настройте быстрый домен с SQL-сервером и протестируйте его в среде по умолчанию. Если он там работает, то это групповая политика, поэтому работайте в обратном направлении, добавляя одно за другим, пока не найдете, где он ломается.
Поскольку вы работаете над обратным проектированием, похоже, что вы можете определить фильтр, используя идентификатор времени выполнения фильтра.
Из документации [здесь] [1] вы сможете определить уровень блокировки с помощью netsh wfp show filters
и найдите 71531 идентификатор времени выполнения фильтра (идентификатор времени выполнения фильтра: 71531
Filter Run-Time ID [Type = UInt64]: unique filter ID which blocked the packet.
Чтобы найти конкретный фильтр платформы фильтрации Windows по идентификатору, вам необходимо выполнить следующую команду: netsh wfp show filters. В результате выполнения этой команды будет сгенерирован файл filters.xml. Вам нужно открыть этот файл и найти конкретную подстроку с нужным идентификатором фильтра ()
Это должно дать вам место для начала. Помимо GPO, есть некоторые другие элементы, которые могут иметь смысл для устранения неполадок:
Kerberos и аутентификация: SQL-сервер тоже находится в домене? используется имя DNS или IP? Учетная запись SQL или учетная запись домена? Разница во времени больше 5 минут? (https://web.mit.edu/Kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-admin/Clock-Skew.html)
Брандмауэр на принимающей стороне: вы подключаетесь к другой подсети, возможно ли, что существует проблема брандмауэра / маршрута, которую необходимо настроить?
удачи!