检索具有CLSID {xxxx}的组件的COM类工厂失败,原因是以下错误:80040154。

4
我正在将一个VB6应用程序升级到VB.Net。它使用了“Adobe Acrobat 10.0 Type Library”。然而,在与我的.Net项目一起使用时,我遇到了标题中的错误。我创建了一个小测试项目。当我尝试实例化AcroPDDoc时,即在以下行上抛出异常:
Dim acroApp As Acrobat.AcroPDDoc = New Acrobat.AcroPDDoc()

Adobe库位于C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.dll。添加后,它会将名为“Interop.Acrobat.dll”的dll放入项目的obj文件夹中。 我尝试在两个dll上运行RegSvr32.exe,因为我看到有人建议这样做,但收到了类似于以下的错误:

dll已加载,但调用DllRegisterServer失败,错误代码为0x80004005

我没有找到关于该错误代码的大量信息。

我还尝试过将平台目标从“任何CPU”更改为x86

编辑 - 我在Windows 7的32位和64位版本上都遇到了同样的问题。

在Win 7 64中,我输入了以下内容:

C:\Windows\SysWOW64>regsvr32"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.dll"

收到以下错误:

RegSvr32 error - 64 bit win7

在Win 7 32位系统中,输入以下内容:

C:\Windows\system32> regsvr32 "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.dll"

收到以下错误信息:

RegSvr32 error - 32 bit win7

编辑2 - 根据Raymond Chen的建议,我再次查看了Adobe网站。我在这里这里找到了几个帖子,以及stackoverflow上的另一个问题。前两个链接没有特别提到.NET,但从它们中可以看出,必须安装完整版本的Acrobat Reader才能使这些互操作类起作用/注册相关DLL文件。明天我会检查一下,但我有强烈的怀疑,客户的环境可能包括完整版本的Acrobat Reader。 感谢所有回答过我的人。

编辑3 - 获得了完整版本的Acrobat,安装后,一切都很好!


1
你尝试过以管理员权限运行程序或关闭UAC吗? - CodingGorilla
1
作为CodingGorilla,在命令行中使用管理员权限。另外,如果您正在运行64位计算机,请导航到\windows\syswow64目录。 - Ulises
错误代码0x80040154是“类未注册”,这意味着Acrobat对象未正确安装。0x80004005是E_FAIL。这是由acrord32.dll返回的错误 - 您需要询问Adobe为什么他们的DLL注册失败。 - Raymond Chen
一个32位程序安装在64位机器上的c:\program files目录下?它怎么会变得这么混乱呢? - Hans Passant
@CodingGorilla - 你说得很对,它就在那里。我搞混了;我的开发虚拟机运行的是Win7的64位版本。但我实际的机器上,也就是我创建小型测试项目的机器上并没有安装。我完全忘记了这一点,请原谅。然而问题在两台机器上都存在。我将更新我的问题以避免任何混淆。 - dbr
显示剩余6条评论
1个回答

1
如上所述,除非机器上安装了完整版本的Acrobat,否则该dll将不允许自己被注册。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接