本文介绍了COM +组件崩溃 - 事件ID:4689的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 您好, 我有一个使用C ++,Win32,COM / ATL(COM +服务器)构建的旧服务器应用程序,运行在Windows Server 2012 R2 Standard和Windows Server 2008上(我没有确切的配置) 直到最近(直到大约3个月前),服务器应用程序一直在运行,没有报告任何崩溃。但是,从那以后它一直在崩溃,我们从事件日志中获得的唯一信息是: 错误代码= 0x80040150:无法从注册表中读取密钥 COM +服务内部信息: 文件:com\complus\src\comsvc​​s\events\evregistrar.cpp,行:513 $ Comsvc​​s.dll文件版本:ENU 2001.12.10530.17415 shp 事件ID为4689. 显然,这是一个失败的注册表读取,但如果没有足够的线索,我们无法找到我们的代码中读取失败的位置。这不是单个系统上的一次性案例,但已报告了许多实例。 我的问题是,因为这些服务器上没有更改代码 - 二进制文件没有被替换,可能是由于最新的Windows更新?显然,这是机器上唯一的变化。  如果没有,只使用我所拥有的上述信息,有没有办法可以在我们的代码? TIA。 解决方案 这听起来像一个可怕的问题。人们想知道注册表是否有变更或是否存在一些注册表损坏负责。 我建议使用Sysinternals的Process Monitor(或Process Explorer)监控注册表更改,以及看看你是否可以缩小正在阅读的注册表位置。了解事件的时间并从Process Monitor登录可能允许您在注册表位置回家。 Hello,I have a legacy server application built using C++, Win32, COM / ATL (COM+ servers), running on Windows Server 2012 R2 Standard and Windows Server 2008 (I don't have the exact configuration)Until recently (till about 3 months back) the server application had been running without any crashes being reported. However, since then it has been crashing regularly and the only information we get from the event logs is this:Error Code = 0x80040150 : Could not read key from registryCOM+ Services Internals Information:File: com\complus\src\comsvcs\events\evregistrar.cpp, Line: 513Comsvcs.dll file version: ENU 2001.12.10530.17415 shpThe Event ID is 4689.Obviously it is a registry read that is failing, but without sufficient clues we are not able to locate where in our code the read fails. This is not a one off case on a single system but many instances have been reported.My question is since there is no code that has been changed on these servers - binaries have not been replaced, could it be due to any recent Windows updates? Apparently, that has been the only change on the machines. If not, using only the above information that I have, is there a way in which I could track down this registry read failure in our code?TIA. 解决方案 This sounds like a hideous problem. One wonders if there has been a change to the registry or if there is some registry corruption responsible.I suggest using Sysinternals' Process Monitor (or Process Explorer) to monitor the registry changes, and see if you can narrow down what registry location is being read. Knowing the time of the event and and log from Process Monitor may allow you to home in on the registry location. 这篇关于COM +组件崩溃 - 事件ID:4689的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-25 02:20