Identifing error: 0x800442B6, occurs when attempting to use COM component

Identifing error: 0x800442B6, occurs when attempting to use COM component

在一台特定的计算机上,当我尝试使用 .NET 创建 COM 对象的实例时,出现错误,而在任何其他计算机上都不会出现该错误。

当我在这台计算机上通过 VBA 在 Excel 中使用相同的 COM 组件时,我没有收到错误消息。

我已经搜索了错误,但没有找到任何内容。我什么意思都没有,蟋蟀,我在 space 尖叫,没人能听到我...

我编写了几个控制台应用程序,它们使用不同版本的 .NET 框架,并且总是返回相同的错误代码。

完整错误:

System.Runtime.InteropServices.COMException (0x800442B6): Creating an instance of the COM component with CLSID {2B763B2C-9F4C-4A65-8F47-338CB685D759} from the IClassFactory failed due to the following error: 800442b6 Exception from HRESULT: 0x800442B6. at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type)

谢谢!

您可以尝试以下方法:

  • 添加代码以记录错误的时间戳。
  • 然后运行Process Monitor,运行你的申请,研究那个时刻的日志。
  • 以只看到失败的 API 调用的方式过滤进程监视器的输出。

虽然您不太可能真的在进程监视器日志中看到 800442B6,但它仍然可以让您了解是哪个 Win32 API 调用链导致了错误。最有可能的是失败的文件 I/O 或注册表 API。将日志与您的应用 运行 成功运行的计算机的日志进行比较。

先生帕桑特是对的。向 COM 组件的供应商施加一些压力导致获得错误的含义,这帮助我解决了问题。也许 Passant 先生想提供一个我可以标记为正确的答案,以表彰他。谢谢!