Не удалось запустить QuickBooks при запуске консольного приложения из планировщика задач

Я написал консольное приложение, используя Interop.QBFC13, которое подключается к Quickbooks. Если я настрою запланированную задачу с «запускать только тогда, когда пользователь вошел в систему», она откроет окно консоли и успешно запустится. Если я настрою запланированную задачу с «запускать независимо от того, вошел пользователь в систему или нет», задача будет выполняться без открытия окна консоли, и я получаю сообщение об ошибке «Не удалось запустить Quickbooks».

Я где-то читал о невозможности запуска QBFC SDK, когда нет пользовательского интерфейса, и мне интересно, может ли это быть проблемой, поскольку окно консоли не открывается? Если да, то как мне запустить консольное приложение с настройкой «запускать независимо от того, вошел пользователь в систему или нет»?

Спасибо!


person Primico    schedule 07.02.2018    source источник


Ответы (2)


Я считаю, что нашел ответ на вопрос -> не обязательно решение для достижения цели.

Приложения QB и QBXML SDK должны запускаться в контексте пользователя. Вам нужно будет открыть сеанс Windows, но пользователю не нужно входить в систему QB, чтобы ваше приложение могло работать против него. Тем не менее, QB должен быть открыт администратором при первом подключении вашего приложения и авторизации автоматического режима.

intuit.developer

Планировщик Windows изменился с настольного компьютера на сервисный, начиная с Vista или Win7, а в новой ОС планировщик работает как сервисный.

QuickBooks и QODBC — это настольные приложения/драйверы.

QODBC использует SDK QuickBooks, а SDK QuickBooks использует приложение QuickBooks для получения данных из файла компании.

Для SDK QuickBooks требуется активный сеанс рабочего стола (кто-то должен войти в систему) на компьютере, поскольку QuickBooks — это настольное приложение. Если никто не заходил на сервер/компьютер, вы получите сообщение об ошибке «Не удалось запустить QuickBooks».

Даже если вы указали имя пользователя/пароль и пользователь вошел в систему, вы можете заметить ту же ошибку. Это связано с тем, что задача, выполняемая из планировщика заданий, запускается как другой пользователь/новый сеанс.

Обходной путь — использовать настольный планировщик, такой как Z-Cron или http://alternativeto.net/software/task-scheduler/?platform=windows.

источник цитируемого текста

теперь это может быть не то решение, которое вам нужно. но он отвечает на ваш вопрос/проблему и включает обходной путь.

Я тоже сталкиваюсь с такой же дилеммой и ищу решение. это, возможно, должно быть так, как я иду. другой вариант — запускать ваше консольное приложение при любом входе пользователя в систему и отслеживать ваш последний успешный запуск, текущий статус приложения (независимо от того, запущено ли оно в данный момент или нет) — так вы убедитесь, что работаете в соответствии с указанным расписанием. но это не только относительно запутанное решение, у вас не обязательно есть гарантия, что кто-то войдет в систему в течение отведенного вам времени (они могут даже не войти в систему в течение недели).

я попытался запустить удаленный сеанс, в результате чего приложение запускается при запуске с другого сервера с помощью планировщика задач. но это дало мне точно такой же результат.

В настоящее время я изучаю QBWC, чтобы узнать, позволит ли какой-либо из этих подходов мне достичь желаемой цели общения с QB по расписанию автономно.

я сожалею, что не смог предоставить вам окончательное решение, но я думаю, что вы и другие могут извлечь пользу из уже проведенного исследования. Кроме того, я надеюсь, что эта информация поможет вам найти правильное решение.

person Heriberto Lugo    schedule 09.03.2018

Убедитесь, что в приложении QODBC отмечена поддержка SQL-сервера. Затем запустите планировщик задач от имени администратора, перейдя в расположение планировщика задач. Затем перейдите в планировщик задач и нажмите «Выполнить». Независимо от того, вошел ли пользователь в систему или нет, введите данные пользователя и запустите задачу: это должно дать вам сообщение об ошибке: [RODBC] ERROR: состояние S0000, код 10075, сообщение [QODBC] Server Edition. QODBC требуется для использования серверов DCOM. После этого измените его обратно на «Выполнять только тогда, когда пользователь вошел в систему», это технически должно решить проблему.

person piyuw    schedule 18.07.2021