应用程序在启动时崩溃,事件日志中的应用程序错误提供了以下信息:
故障模块名称: KERNELBASE.dll,版本: 6.2.15063.483,时间戳: 0xc3955624
异常代码: 0xe0434f4d
故障偏移: 0x000eb802
,这是背景故事,
在我们的一个客户网络上,我们的应用程序甚至还没能打开就崩溃了。我已经花了好几天时间寻找答案,还没能解决这个问题。我从一些基本的故障排除开始,在没有发现任何冒烟的枪之后,我发现一个新的用户配置文件解决了这个问题,我认为这是一个很好的修复方法,可以重新恢复并运行。他们的外包IT最初同意了,但在将用户数据迁移到新配置文件时遇到了困难,而且从未能够完成将受影响的用户迁移到新配置文件。现在,这个问题发生在他们网络上的另一台机器上,他们说问题出在我们的应用程序上,我们应该花时间去修复它。我同意,如果它在我们的代码中,我们应该修复它,但到目前为止,它似乎还不够远,达到我们的代码。另外,我们在其他任何地方都没有看到这种情况,只有在这个网络上,有两个帐户登录到带有本地帐户的域PC上。
应用程序信息
用户环境信息
迄今对的疑难解答
问题
在我看来,在应用程序启动之前出现了一个未处理的CLR异常,可能是因为某个文件或注册表条目上的一些windows权限冲突,但我不知道如何进一步跟踪它。
发布于 2017-07-29 08:09:42
我能够修复这个问题,所以这个应用程序又开始工作了。在比较了两个ProcMon日志(一个来自崩溃的概要文件,另一个来自具有相同权限的新配置文件)之后,我发现在崩溃的配置文件上,它很早就开始引用apphelp.dll并查看注册表中的AppCompatFlags键。这让我相信它试图在兼容性模式下运行,这是它不需要做的。
尽管I通过右键单击应用图标并查看属性来确保在UI中没有设置兼容性模式,但是仍然有一些记录存储在注册表中。我从下面的键中删除了该应用程序的条目,并将用户登出并重新登录,问题已经解决。说句公道话,我还做了一些其他的事情,这也可能是我的贡献。我下载并运行了.NET修复工具。它没有在运行后立即解决这个问题,但我想我应该提一下,以防它起作用。我首先运行了修复工具包,然后找到并删除了注册表条目,然后将用户注销并重新登录。
最终,我不太清楚是什么导致了这种情况的发生,但从我所读到的来看,这个应用程序可能曾经崩溃过一次,而Windows试图对其进行一些兼容性故障排除,并将一些键存储在注册表中,最终导致崩溃。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
发布于 2022-09-14 14:48:44
在我的例子中,异常代码将我引导到异常代码: 0xe0434f4d
正如在文章中提到的,诀窍在于安装了.net框架版本和app.config中的supportedRuntime键。
https://stackoverflow.com/questions/45338908
复制相似问题