Reputation: 1
I have an ASP.NET application that interacts with the QuickBooks SDK for desktop.
When the following code is executed on our target server (at a hosting company):
QBSessionManager SessionManager = new QBSessionManager();
I'm getting the error:
Retrieving the COM class factory for component with CLSID {BF97F9A2-A475-4F26-9B5B-3A14F02D9824} failed due to the following error: 8007007e The specified module could not be found. (Exception from HRESULT: 0x8007007E)
This error does not occur on my local machine - the QB-related code has been fully tested on my local machine.
The application is .NET Framework 4.7.2. The platform target is set to x86. The QB SDK version is 8.0. The problem server is Windows Server 2019.
Interop.QBFC8.dll and qbfc8.dll were installed with the SDK installer. They are in C:\Program Files (x86)\Common Files\Intuit\QuickBooks. They are not blocked. Interop.QBFC8.dll is in the GAC.
In my code I added a check for InProcServer32:
string clsid = "{BF97F9A2-A475-4F26-9B5B-3A14F02D9824}";
RegistryKey t_clsidKey = Registry.ClassesRoot.OpenSubKey("CLSID");
RegistryKey t_clsidSubKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\InProcServer32");
When run on the server it returns C:\Program Files (x86)\Common Files\Intuit\QuickBooks\qbfc8.dll.
The related registry keys/values for CLSID {BF97F9A2-A475-4F26-9B5B-3A14F02D9824} and QBFC8.QBSessionManager all match what I have on my local machine. I can provide those.
It's a 32-bit DLL on a 64-bit machine, so it's doing the Wow6432Node registry entries - they look OK.
We've tried raising permissions on C:\Program Files (x86)\Common Files\Intuit\QuickBooks - this had no effect.
We ran Process Monitor when running a test to the server. We saw no Registry Access Errors. We saw Interop.QBFC8.dll and qbfc8.dll both being accessed, seemingly without error.
We tried setting "Enable 32-Bit Applications" in IIS to both True/False - same error.
I've been plagued by this thing for a month. If anyone out there has any suggestions, I'd sure appreciate it!
Upvotes: 0
Views: 432
Reputation: 48999
To use the QBFC system with QuickBooks desktop, and not the web connector, or "RDS" server, then you reqiure a full edition of QuickBooks desktop when using the QBFC interface.
In fact, the first time you do this, QuickBooks desktop will show this:
As you can see in above, the security prompt can allow the QBFC interface to run if you not launched (have) QB running, but what occures is a copy is started if you don't have it running already.
So, "context" here is required. The QBFC interface system has two choices, and in fact in later editions they have removed the web connector part(s), and you are to use web api calls as a result.
However, for interface(s) using the QBFC and not some "connector" technology, then YES you do need to have a full edition of QuickBooks installed on the same computer running QBFC.
As noted, the first time such a application written using the QBFC interface is run, then the user in QuickBooks will see/get and HAVE to answer + deal with the above security prompt.
So, part of this answer "depends" on how the QBFC interface code was written and being used, but for the most part, QBFC will require a full working copy of QuickBooks to be installed on the same computer.
As noted, exceptions are is a RDS server - or the point of sale interface (if that's what you doing with the QBFC + sdk). And the other possible is using the web connector.
However, assuming a 100% desktop enviorment? Then yes, to use QBFC in this limited context, yes, you need a full working copy of QB on that same computer running your interface code written using .net and the SDK.
So, the answer is it "depends" on what and how the SDK is being used to interface with QB. And depending on that "how" will thus determine if you need full QB installed to work with the QBFC interface or not.
Upvotes: 0