在尝试使用COM组件时发生错误:0x800442B6

时间:2015-06-23 20:03:02

标签: c# .net com hresult

在一台特定的计算机上,当我尝试使用.NET创建COM对象的实例时,我收到的错误是我无法访问任何其他计算机。

在此计算机上通过Excel中的VBA使用相同的COM组件时,我不会收到错误。

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

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

完整错误:

  

System.Runtime.InteropServices.COMException(0x800442B6):创建一个   带有CLSID的COM组件的实例   来自IClassFactory的{2B763B2C-9F4C-4A65-8F47-338CB685D759}失败   由于以下错误:800442b6来自HRESULT的异常:   0x800442B6。在System.RuntimeTypeHandle.CreateInstance(RuntimeType   type,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,   RuntimeMethodHandleInternal&安培; ctor,布尔& 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)
  在System.Activator.CreateInstance(Type type,Boolean nonPublic)at   System.Activator.CreateInstance(类型类型)

谢谢!

2 个答案:

答案 0 :(得分:2)

先生。帕萨特是对的。有点推动COM组件的供应商导致获得错误的含义,这有助于我解决问题。或许Passant先生想提供一个我认为正确无误的答案。谢谢!

答案 1 :(得分:0)

您可以尝试以下操作:

  • 添加代码以记录错误的时间戳。
  • 然后运行Process Monitor,运行您的应用程序并研究那段时间周围的日志。
  • 按照您只看到失败的API调用的方式过滤Process Monitor的输出。

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