正在检索具有 CLSID 错误的组件的 COM class 工厂

Retrieving the COM class factory for component with CLSID Error

我收到这个错误

Retrieving the COM class factory for component with CLSID {819F123A-B24A-4EB8-BED1-B5DFC5CB5194} failed due to the following error: 80040154 Class not registered (Exception from 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 位但没有运气。我没有在互联网上获得 "VSPrinter8Lib" 的 32 位版本,更晚的是我能够使用 regsvr32 将其 convert/register 变为 32 位(获取错误入口点未找到)也无法在注册表中找到 CLSID(因为它没有安装程序)。自上一周以来有点受到打击。寻求帮助。提前谢谢你。

我能够解决问题。当使用 ActiveX 控件是 .NET 项目时,Visual Studio 将创建一个 "bubble" 的 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