如何解决 .NET 运行时中的内部错误

如何解决 .NET 运行时中的内部错误

几周前,我公司的笔记本电脑开始出现一些奇怪的问题。我无法再启动 Microsoft Developer Web Server(通过 Visual Studio->Debug)。后来我发现我无法执行任何 .NET 应用程序。

在查看了我的 dmp 文件后,我与 Microsoft CLR 专家进行了交谈,他表示

  1. 当加载到您的进程中时,.exe 文件中偏移量 0×168 处的 8 个字节被设置为 0。这是导致 CLR 失败的问题。您提供给我的文件中的这些位设置正确。

  2. C:\Windows\System32\Detoured.dll 被加载到进程中。对我来说,这意味着您的机器上正在使用 detours 库来修改这些进程的行为。

我还发现,当我启动到安全模式时,一切都正常。

另外,我发现如果我右键单击 .NET 可执行文件,然后选择“以...身份运行”并输入我当前登录的用户凭据,则该应用程序可以运行。如果我双击该应用程序,它就不起作用。

有很多系统事件消息和 Dr. Watson 类型错误。以下是我收到的一些错误:

从 Visual Studio 启动 MS Developer Web Server 时,弹出消息框显示:

WebDev.WebServer40.exe has encountered a problem and needs
to close. We are sorry for the inconvenience.

VSHost 系统事件日志条目:

Event 1:
Application: MyWebSite.vshost.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error
in the .NET Runtime at IP 791A8BBD (79140000) with exit code 80131506.

Event 2:
Faulting application MyWebSite.vshost.exe, version 10.0.30319.1, 
stamp 4ba2084b, faulting module clr.dll, version 4.0.30319.1, 
stamp 4ba1d9ef, debug? 0, fault address 0x00068bbd.

正在运行的第三方应用程序的系统事件日志条目:

Source: Application Popup
Description: Application popup: #APPNAME#.exe – Application Error : The 
application failed to initialize properly (0xc000007b). Click on OK 
to terminate the application.

我构建的使用 .NET v4 Framework 系统事件日志的应用程序显示:

Source: .NET Runtime
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the 
.NET Runtime at IP 791A8BBD (7914000) with exit code 80131506.

我构建的使用 .NET v2 Framework 系统事件日志的应用程序显示:

Source: .NET Runtime
Description: .NET Runtime version 2.0.50727.3053 – Fatal Execution 
Engine Error (7A097706) (80131506)

以下是更多详情请参阅我的博客- 包括我迄今为止尝试过的一切以及更多细节和叙述。

就还原点而言,我最早的还原点是几周前的,当时我仍然遇到这个问题,所以我认为还原那个点不会有太大帮助。

我如何才能找出哪个进程导致了问题然后修复计算机?

答案1

既然您说该问题不会在安全模式下发生,那么很明显这是由已安装的应用程序、附加组件或驱动程序引起的。

考虑到您已为这个项目付出的努力,我建议您重新格式化硬盘并重新安装 XP,然后逐个重新安装所有产品,重新启动以检查问题是否再次出现。或者,您可以使用 Revo Uninstaller 卸载产品,但即使是 Revo 也可能会错过特别狡猾的安装。

坦率地说,启动时被修改的可执行文件有病毒感染的味道,这就是为什么我在这种情况下特别建议重新格式化。

答案2

您的答案可能在第一段中 - 删除 Detours。转到“添加/删除程序”,找到 Detours,然后将其删除。

绕行路线:http://research.microsoft.com/en-us/projects/detours/

答案3

我会尝试使用依赖性遍历器. 分析程序并保存输出。启动到安全模式并再次分析。比较输出可能会提供有关程序何时被修改的更多信息。

您还可以尝试使用 WinDbgWindows 调试工具(该链接适用于驱动程序开发人员,但我曾使用 WinDbg 来处理 .NET 程序。)为了获得最多的调试输出,您需要Windows 符号包也适用于 XP。

相关内容