System.Runtime.InteropServices.COMException一次又一次

时间:2016-07-25 18:22:33

标签: vb.net visual-studio-2015 comexception

我不知道为什么/何时发生这种情况,但这个错误信息每年都会让我感到困惑:

抛出异常:' System.Runtime.InteropServices.COMException'在mscorlib.dll中

附加信息:由于以下原因,具有CLSID {C70F08F3-3F2A-477D-9F7A-B5463E973BDC}的组件的COM类工厂无法访问:80040154未注册类(HRESULT异常:0x80040154) (REGDB_E_CLASSNOTREG))。

我不记得每次发生这种情况我是如何解决的。 我想我重新编译OCX组件然后再添加它。

然而,这很奇怪,因为我可以在VB6中使用OCX组件。 为什么它不能在.NET中访问?

有人能解释一下这里会发生什么吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

很难猜测OP中没有任何支持代码,但症状与OCX因任何原因改变CLSID一致(例如,由于界面变化)。

在那种情况下:

  • 重建OCX通常会在最后重新注册,所以注册了正确的类;

  • 重新添加对OCX的引用会将引用的CLSID更新为正确的引用。

至于它为什么在VB6中工作,很可能已经以某种方式更新了引用。鉴于缺乏细节,究竟如何发生这种情况再次难以猜测。