1

我有一个使用 QBFC 12.0 用 C# 编写的 Quickbooks“集成应用程序”。它已在许多具有多个版本的 Quickbooks 的站点上安装并正常工作。今天我尝试使用 Quickbooks 2012 Premiere 在新站点上安装它。要授权应用程序连接,需要打开 QB,以 QB 管理员身份登录,然后从集成应用程序启动连接。每次我在新站点上安装应用程序时都必须这样做。在这种情况下,当我尝试启动连接时,我收到以下错误消息:

无法打开 Quickbooks。Quickbooks 无法启动,因为它已经在运行。只有 Quickbooks Accountant 和 Quickbooks Enterprise 可以打开多个公司文件。

由于我的应用程序正在尝试访问已打开的同一公司文件,因此此消息具有误导性。查看 QBSDKLog.txt,我发现以下内容:

20131010.152314 I   5324    RequestProcessor    ========= Started Connection =========
20131010.152314 I   5324    RequestProcessor    Request Processor, QBXMLRP2 v11.0
20131010.152314 I   5324    RequestProcessor    Connection opened by app named 'IOS     Briefcase Sync'
20131010.152314 I   5324    RequestProcessor    OS: Microsoft Windows 7 Professional Service Pack 1 (build 7601), 32-bit
20131010.152314 I   5324    RequestProcessor    Current Process is elevated
20131010.152314 I   5324    RequestProcessor    Current User is in AdminGroup
20131010.152314 I   5324    RequestProcessor    Current Process is ran as Admin
20131010.152314 I   5324    RequestProcessor    Current Process Integrity Level : 3000
20131010.152314 I   5324    RequestProcessor    Getting the IUnknown COM instance of QB
20131010.152514 E   5324    RequestProcessor    An internal error occured while looking for a running instance of QuickBooks and getting its COM reference. Cannot continue. hr = 80080005
20131010.152514 E   5324    RequestProcessor    Could not find or create an instance of QuickBooks using InstanceFinder hr = 8004041c
20131010.152514 I   5324    RequestProcessor    Connection closed by app named 'IOS Briefcase Sync'
20131010.152514 I   5324    RequestProcessor    ========== Ended Connection ==========

知道什么可能导致 COM 错误吗?

4

1 回答 1

5

我遇到了类似的问题,出现“无法打开 Quickbooks。Quickbooks 无法启动,因为它已经在运行。” 错误。

在某些情况下,我还会收到“如果 QuickBooks 公司数据文件未打开,则对 BeginSession 方法的调用必须包含数据文件的名称。” 当 QuickBooks 确实打开了数据文件时。

我最终将其追溯到 QBINSTANCEFINDER17.INI 文件(C:\ProgramData\INTUIT\QuickBooks\QBINSTANCEFINDER17.INI)。我清除了该文件中的条目,现在一切正常。

QuickBooks 使用 QBINSTANCEFINDER ini 文件来跟踪打开的实例。显然,当 QBW32.exe 进程异常关闭时,此文件中的条目并不总是按应有的方式清除。通常这不会引起问题,但在某些情况下会出现问题。

编辑:评论...

我还发现在某些情况下一定存在安全令牌问题(或类似问题)。在 Windows 7 64 位系统上,我发现在调试器(Delphi 2007)的控制下运行应用程序时,我无法从应用程序访问 QuickBooks。但是,如果在运行时将相同的 .EXE 文件复制到Program Files (x86)下的正常安装文件夹,则可以正常访问 QuickBooks。

否则(从调试器运行,甚至只是从我的开发文件夹运行)总是发生的是未检测到正在运行的 QuickBooks 实例,并且 QBXML 调用导致 QuickBooks 的第二个实例启动,从而导致您描述的错误。

于 2014-10-09T23:26:28.223 回答