检索具有CLSID错误的组件的COM类工厂

时间:2017-09-07 21:10:46

标签: vb.net 32bit-64bit com-interop

我收到此错误

  

检索具有CLSID {819F123A-B24A-4EB8-BED1-B5DFC5CB5194}的组件的COM类工厂由于以下错误而失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

以下代码:

Public WithEvents vp2 As VSPrinter8Lib.VSPrinter
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    vp2 = New ``VSPrinter8Lib.VSPrinter
End Sub
End Class

我厌倦了所有选项,比如在VS中以32位模式运行它,在syswow64文件夹中复制,将dll转换为32位但没有运气。我没有在互联网上获得32位版本的“VSPrinter8Lib”,更新我能够使用regsvr32将其转换/注册到32位(未找到错误输入点)也无法在注册中找到CLSID(因为它确实'安装人员)。自上个星期以来遭遇了一些打击。寻求帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我能够解决问题。当使用ActiveX控件是.NET项目时,Visual Studio将创建ActiveX的“气泡”以允许控件操作,然后创建互操作层以允许.NET项目与activex控件进行通信。在我的示例中,我试图注册Visual Studio创建的互操作层(Interop.VSPrinter8Lib.dll)而不是实际的ActiveX控件本身。因此,您需要为所需的Introp DLL获取ActiveX OCX文件,例如vsprint8.ocx取代Interop.VSPrinter8Lib.dll并确保所有这些文件都在您注册OCX文件的目录中(如果在64位计算机上,它应该在C:\ Windows \ SysWow64中)。此外,请确保命令行(cmd.exe)作为管理员运行。 例如我将OCX文件保存在C:\ Vineet \ vsprint8.ocx中,并在命令下运行 c:\ windows \ syswow64 \ regsvr32.exe C:\ Vineet \ vsprint8.ocx