从任务调度程序

时间:2018-02-07 04:20:22

标签: scheduled-tasks console-application qbfc

我使用连接到Quickbooks的Interop.QBFC13编写了一个控制台应用程序。如果我设置了“仅在用户登录时运行”的计划任务,它将打开控制台窗口并成功运行。如果我使用“运行是否登录用户”来设置计划任务,则任务将在不打开控制台窗口的情况下运行,并且出现错误“无法启动Quickbooks”

我在没有用户界面的情况下读到了无法运行QBFC SDK的地方,我想知道这可能是问题,因为控制台窗口没有打开?如果是这样,我将如何运行控制台应用程序“运行是否用户登录”设置?

谢谢!

2 个答案:

答案 0 :(得分:1)

我相信我找到了问题的答案 - >不一定是达到目标的解决方案。

  

QB和QBXML SDK应用程序必须在用户的上下文中运行。您必须打开Windows会话,但用户无需登录到QB,您的应用程序就可以针对它运行。但是,在您的应用程序第一次建立连接并且您授权无人值守模式时,管理员必须打开QB。

intuit.developer

  

Windows计划程序已经从桌面基础更改为基于服务的Vista或Win7以及新的操作系统将计划程序更改为   服务为本。

     

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自主沟通的预期目标。

我很遗憾无法为您提供明确的解决方案,但我认为您和其他人可以从迄今为止已经完成的研究中获益。此外,我希望这些信息可以帮助您找到正确的解决方案。

答案 1 :(得分:0)

确保在 QODBC 应用程序中勾选 SQL 服务器支持 然后通过转到任务计划程序的位置以管理员身份运行任务计划程序。 然后转到任务计划程序并单击“无论用户是否登录都运行”, 输入用户详细信息并运行任务:这应该给你一个错误提示:[RODBC] 错误:状态 S0000,代码 10075,消息 [QODBC] 服务器版 QODBC 需要使用 DCOM 服务器 完成此操作后,将其更改回“仅在用户登录时运行”,这应该在技术上解决问题。