我有一个使用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错误的原因吗?
答案 0 :(得分:4)
我遇到了类似的问题,因为他们不能打开Quickbooks。 Quickbooks无法启动,因为它已经在运行。"错误。
在某些情况下,我也得到了#34;如果QuickBooks公司数据文件未打开,则对BeginSession方法的调用必须包含数据文件的名称。"当QuickBooks肯定确实打开了一个数据文件。
我最终将其追溯到QBINSTANCEFINDER17.INI文件(C:\ ProgramData \ INTUIT \ QuickBooks \ QBINSTANCEFINDER17.INI)。我清除了这个文件中的条目,现在一切正常。
QuickBooks使用QBINSTANCEFINDER ini文件来跟踪打开的实例。显然,当QBW32.exe进程异常关闭时,此文件中的条目并不总是如此 他们应该清理。通常这不会引起问题,但在某些情况下可能会引起问题。
编辑:评论......
我还发现在某些情况下必须存在安全令牌问题(或类似的东西)。在Windows 7 64位系统上,我发现在调试器的控制下运行时,我无法从我的应用程序访问QuickBooks(Delphi 2007)。但是,相同的.EXE文件,如果在运行时复制到 Program Files(x86)下的正常安装文件夹,则可以正常访问QuickBooks。
否则(从调试器运行,或者甚至只是从我的开发文件夹运行)总是发生的事情是没有检测到正在运行的QuickBooks实例,并且QBXML调用导致QuickBooks的第二个实例启动,导致您描述的错误