我不知道为什么/何时发生这种情况,但这个错误信息每年都会让我感到困惑:
抛出异常:' System.Runtime.InteropServices.COMException'在mscorlib.dll中
附加信息:由于以下原因,具有CLSID {C70F08F3-3F2A-477D-9F7A-B5463E973BDC}的组件的COM类工厂无法访问:80040154未注册类(HRESULT异常:0x80040154) (REGDB_E_CLASSNOTREG))。
我不记得每次发生这种情况我是如何解决的。 我想我重新编译OCX组件然后再添加它。
然而,这很奇怪,因为我可以在VB6中使用OCX组件。 为什么它不能在.NET中访问?
有人能解释一下这里会发生什么吗?
谢谢。
答案 0 :(得分:1)
很难猜测OP中没有任何支持代码,但症状与OCX因任何原因改变CLSID一致(例如,由于界面变化)。
在那种情况下:
重建OCX通常会在最后重新注册,所以注册了正确的类;
重新添加对OCX的引用会将引用的CLSID更新为正确的引用。
至于它为什么在VB6中工作,很可能已经以某种方式更新了引用。鉴于缺乏细节,究竟如何发生这种情况再次难以猜测。