从域计算机运行时应用程序立即崩溃,当计算机脱离域时,它运行正常

从域计算机运行时应用程序立即崩溃,当计算机脱离域时,它运行正常

我们公司开发了一款新的 Windows 应用,用于连接 SQL 数据库。当该应用在域环境之外运行时,它运行良好。当运行它的计算机连接到域时,该应用立即崩溃。

我发现了一些错误,我认为这些错误可能表明了问题所在,但我不确定如何准确解释它们,也不知道是什么阻碍了程序的运行。我不认为这是防火墙的问题,因为当 PC 不在域中时,程序可以正常工作。我仔细检查了每个组策略设置,似乎也没有任何东西可以抑制应用程序的运行,尽管考虑到具体情况,它似乎是罪魁祸首。

错误如下:

应用程序日志

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

答案1

开发人员应该能够告诉您具体哪里出了问题,但我假设是 WindowsApps 中文件夹的安全性出了问题。尝试以提升的权限运行该应用程序,看看是否可行。

如果是,那么我会说该应用程序没有正确开发,因为用户通常无法写入 Program Files 但可以写入 ProgramData ,任何应用程序生成的数据都应该保存在那里。

如果没有,请让他们访问您的环境,以便他们可以在您的环境中进行测试并调试,或者要求他们将详细的日志写入文件中,这将有助于分析。

PS 如果可以的话,使用 SQL Server 设置一个快速域并在默认环境中测试它。如果它在那里工作,那就是组策略,因此通过逐个添加来反向工作,直到找到它中断的地方。

答案2

由于您正在进行逆向工程,因此看起来您可以使用过滤器运行时 ID 来识别正确的过滤器。

从文档[这里][1]中,您应该能够通过确定阻止层 netsh wfp show filters并查找 71531 过滤器运行时 ID(过滤器运行时 ID:71531

Filter Run-Time ID [Type = UInt64]: unique filter ID which blocked the packet.

要按 ID 查找特定的 Windows 过滤平台过滤器,您需要执行以下命令:netsh wfp show filters。此命令的结果将生成 filters.xml 文件。您需要打开此文件并查找具有所需过滤器 ID 的特定子字符串()

这应该给你一个起点。除了 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

接收方防火墙:您正在连接到不同的子网,是否可能存在需要配置的防火墙/路由问题?

祝你好运!

相关内容