由于以下错误,检索具有CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9}的组件的COM类工厂失败:80040154

时间:2013-02-22 23:20:33

标签: quickbooks qbfc qbxml

我收到了这个错误:
由于以下错误,检索具有CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9}的组件的COM类工厂失败:80040154。

Dim smgrGlobal As QBSessionManager
smgrGlobal = New QBSessionManagerClass()

第二行是错误的一行 我只在QB2013和QBFC12上出现此错误。任何以前的版本都不会发生这种情况 我可以找到,这个错误是由于应用程序没有为x86编译(如果使用“任何CPU”)。但是我已经设置我的应用程序编译为x86而不是“任何CPU”我仍然收到此错误。

3 个答案:

答案 0 :(得分:6)

COM错误0x80040154字面意思是“类未注册”。引用的“类”是您尝试实例化的组件的COM类。以下是您可能会收到此错误的原因:

  1. 如您所述,如果您使用“x64”或“任何CPU”而不是“x86”构建应用程序,您将看到此问题。这是因为32位进程使用与64位进程不同的注册表配置单元,而注册表是保存有关COM类注册的信息的地方。
  2. 您尚未在当前本地计算机上正确安装QBFC。无论您用于开发应用程序的QBFC版本是什么,都必须在运行应用程序的每台计算机上安装相同版本的QBFC。如果你不这样做,你可能会幸运,因为其他人安装了正确的版本,但最终你会看到这个问题。我要强调一点:默认情况下,QBFC没有安装QuickBooks。
  3. (不太可能但可能)以某种方式,QBFC的COM注册信息已损坏。通过重新安装正确版本的QBFC可以解决此问题。

答案 1 :(得分:1)

如果更改为X86不起作用,请尝试以下操作: 我使用的是版本13,也适用于其他版本 安装QBFC13_0Installer.exe 确保先安装SDK 在我的系统上,它位于: C:\ Program Files(x86)\ Intuit \ IDN \ QBSDK13.0 \ tools \ installers

我有两个相同的Surface Pro 3与Windows 10.在一个系统上使用相同的代码副本编译并运行得很好。另一方面,我得到了可怕的类错误。经过大量搜索而没有找到解决方案后,我开始在黑暗中进行刺伤,这种特殊刺伤解决了这个问题。

答案 2 :(得分:0)

我在QB POS 2013上遇到了类似的问题。

运行具有管理员凭据的应用程序时出现此错误 - 当我在当前用户下运行应用程序时,一切正常。 出现此错误的原因可能是QBFC安装程序(或合并模块)中的问题 - 两个安装程序都在当前用户(HKCU)的注册表分支中写入COM组件类ID,而不是在本地机器分支(HKLM)上。因此,当您运行您的应用程序不在当前用户(管理员或其他用户)下时,应用程序找不到COM组件ID。

此外,常规QB XML(Interop.QBPOSXMLRPLIB)已正确安装并在所有用户下成功运行。

请在此处查看类似的讨论 - How can A COM component be registered halfway?