Получение ошибки -2147220472 (не удалось запустить Quickbooks)

Я получаю ошибку -2147220472 при попытке подключиться к Quickbooks. Приложение выполняется службой Windows. Файл журнала выглядит следующим образом:

I   8788    RequestProcessor    ========= Started Connection =========
I   8788    RequestProcessor    Request Processor, QBXMLRP2 v12.0
I   8788    RequestProcessor    Connection opened by app named 'QBWatcher'
I   8788    RequestProcessor    OS: Microsoft Professional (build 9200), 64-bit
I   8788    RequestProcessor    Current Process is elevated
I   8788    RequestProcessor    Current User is in AdminGroup
I   8788    RequestProcessor    Current Process is ran as Admin
I   8788    RequestProcessor    Current Process Integrity Level : 3000
I   8788    RequestProcessor    Previous instance of QB is going down..! Wait and retry to get a new instance.
I   8788    RequestProcessor    Previous instance of QB is going down..! Wait and retry to get a new instance.
I   8788    RequestProcessor    Previous instance of QB is going down..! Wait and retry to get a new instance.
I   8788    RequestProcessor    Previous instance of QB is going down..! Wait and retry to get a new instance.
I   8788    RequestProcessor    Previous instance of QB is going down..! Wait and retry to get a new instance.
E   8788    RequestProcessor    Could not find or create an instance of QuickBooks using InstanceFinder
I   8788    RequestProcessor    Connection closed by app named 'QBWatcher'
I   8788    RequestProcessor    ========== Ended Connection ==========
I   8788    CertVerifier    The file does not contain an Authenticode signature.

Это на самом деле иногда работает, но я не могу видеть шаблон. Что может быть причиной этого?

В двух словах, код, используемый для подключения, выглядит следующим образом:

qbxmlConn.OpenConnection2(filename, "QBWatcher", QBXMLRP2Lib.QBXMLRPConnectionType.localQBD);
QBXMLRP2Lib.IAuthPreferences qbAuthPrefs = qbxmlConn.AuthPreferences;                                   
qbAuthPrefs.PutPersonalDataPref(QBXMLRP2Lib.QBXMLRPPersonalDataPrefType.pdpNotNeeded);
qbAuthPrefs.PutUnattendedModePref(QBXMLRP2Lib.QBXMLRPUnattendedModePrefType.umpOptional);
ticket = qbxmlConn.BeginSession(filename, QBXMLRP2Lib.QBFileMode.qbFileOpenDoNotCare);

1 ответ

Решение

Это ключ к этому вопросу:

Приложение выполняется службой Windows.

Благодаря тому, что QuickBooks работает, попытка подключиться к QuickBooks из службы Windows (например, небольшая программа, которая работает и работает в фоновом режиме вместо программы конечного пользователя с графическим интерфейсом) никогда не будет работать надежно.

QuickBooks использует насос сообщений GUI для питания SDK - поэтому, если нет доступного GUI (например, как в службе Windows, которая работает, даже если нет пользователей, вошедших в систему на компьютере), то SDK/API будет недоступен.

Извините за плохие новости.:-/

Можете ли вы сделать так, чтобы ваша программа имела простой графический интерфейс и запускалась только тогда, когда пользователь вошел в систему (заблокируйте экран, если ему нужно покинуть компьютер)?

Другие вопросы по тегам