【问题标题】:"Could not start QuickBooks" when running console application from task scheduler从任务计划程序运行控制台应用程序时“无法启动 QuickBooks”
【发布时间】:2018-07-17 06:42:43
【问题描述】:
我使用连接到 Quickbooks 的 Interop.QBFC13 编写了一个控制台应用程序。如果我使用“仅在用户登录时运行”设置计划任务,它将打开控制台窗口并成功运行。如果我使用“无论用户是否登录都运行”设置计划任务,该任务将在不打开控制台窗口的情况下运行,并且我收到错误“无法启动 Quickbooks”
我在某处读到有关在没有 UI 时无法运行 QBFC SDK 的信息,我想知道这是否可能是问题,因为控制台窗口没有打开?如果是这样,我将如何使用“无论用户是否登录都运行”设置运行控制台应用程序?
谢谢!
【问题讨论】:
标签:
scheduled-tasks
console-application
qbfc
【解决方案1】:
确保在 QODBC 应用程序中勾选了 SQL Server 支持。
然后通过转到任务调度程序的位置以管理员身份运行任务调度程序。
然后转到任务计划程序并单击“运行用户是否登录”,输入用户详细信息并运行任务:这应该会给你一个错误
[RODBC] 错误:状态 S0000,代码 10075,消息 [QODBC] 使用 DCOM 服务器需要 QODBC 服务器版
完成后,将其改回“仅在用户登录时运行”,这在技术上应该可以解决问题。
【解决方案2】:
我相信我找到了问题的答案->不一定是实现目标的解决方案。
QB 和 QBXML SDK 应用程序必须在用户的上下文中运行。您必须打开一个 Windows 会话,但用户不必登录到 QB 即可运行您的应用程序。但是,当您的应用程序第一次建立连接并且您授权无人参与模式时,必须由管理员打开 QB。
intuit.developer
从 Vista 或 Win7 开始,Windows 调度程序已从桌面基础更改为基于服务,并且新操作系统将调度程序作为
以服务为基础。
QuickBooks 和 QODBC 是基于桌面的应用程序/驱动程序。
QODBC 使用 QuickBooks SDK,QuickBooks SDK 使用 QuickBooks
从公司文件中获取数据的应用程序。
QuickBooks SDK 需要一个活动的桌面会话(有人
登录)到机器,因为 QuickBooks 是基于桌面的
应用。如果没有人登录服务器/机器,您将获得
错误“无法启动 QuickBooks”。
即使您已指定用户名/密码并拥有用户
登录机器,您可能会注意到相同的错误。这是
因为从任务计划程序执行的任务作为不同的用户运行 /
新会话。
解决方法是使用基于桌面的调度程序,如 Z-Cron 或 http://alternativeto.net/software/task-scheduler/?platform=windows。
source of quoted text
现在这可能不是您想要的解决方案。但它确实回答了您的问题/问题,并提供了一种解决方法。
我也面临同样的困境,正在寻找解决方案。这可能是我要走的路。另一种选择是在任何用户登录时启动您的控制台应用程序,并跟踪您上次成功运行、当前应用程序状态(是否当前正在运行)——这样您就可以确保在指定的时间表内运行。但它不仅是一个相对混乱的解决方案,而且您不一定保证有人会在您要求的时间分配期间登录(他们甚至可能一周都不会登录)。
我尝试使用任务调度程序从另一台服务器启动远程会话,这会导致应用程序从启动开始运行。但这给了我完全相同的结果。
我目前正在研究 QBWC,看看这两种方法中的任何一种是否可以让我在预定的基地自主实现与 QB 通信的预期目标。
很遗憾我无法为您提供明确的解决方案,但我认为您和其他人可以从我迄今为止所做的研究中获益。此外,我希望这些信息可以帮助您找到正确的解决方案。