通过命令行优雅地将所有用户从QuickBooks中注销

我正在帮助pipe理一个小企业的系统(不幸的是)使用QuickBooks 14来pipe理会计。

顺便说一下,这只是我自己还是QuickBooks存在的最差编程stream行客户端 – 服务器应用程序之一? Intuit是否赚到了足够的钱,实际上他们可以编写一个真正的客户端 – 服务器应用程序,而不是让用户直接通过SMB访问存储?

用户使用运行在Win2k8R2上的RDP服务器来访问公司文件,该文件位于专用于托pipe文件的单独服务器上。

我已经在QuickBooks中设置了预定的备份function来安排夜间备份。

不幸的是,备份会失败 – 但错误信息几乎没有提供任何有用的信息 – 我相当肯定没有networking/ NTFS权限/共享权限问题阻止备份,如果有的话,备份将失败每次。

我迷信,并相信如果所有用户都注销,备份将每次工作。 当用户注销时,我从来没有看到备份失败。

问题是我只知道如何taskkill以编程方式login用户; 我知道在程序中有一个button可以做到这一点,但是我需要它在备份发生之前作为计划任务运行。 我不想每天晚上使用taskkill因为我觉得这可能会导致数据问题。

我怎样才能以编程方式,优雅地结束在QuickBooks中的所有用户的会话?

我相当肯定,为了运行备份,QB必须将自己置于单用户模式。 如果其他用户login到QB那么它不能这样做。

您可能会考虑的一件事是使用RDP的“空闲”和“断开连接”会话限制来终止一段时间内闲置或断开连接的用户会话。 这样,如果用户在回家的时候离开会话,会话将在一段时间后被终止。 这将终止服务器上应该允许QB执行备份的任何QB实例。

在这之后的最后,但是我们之前发现的解决scheme是使用一个计划任务来杀死Quickbooks进程。 虽然“杀”听起来很强,但似乎优雅地closures了应用程序。

对于我们的实施,我们使用组策略将这个计划任务应用到我们所有的QuickBook用户。

  • 命令:taskkill.exe
  • 参数:/ f / im QBW32.EXE

我们以本地login的用户身份运行它。 因为它在用户上下文中,我认为它会做你想做的,而不会干扰用户login到RDP。 我们实际上安排了两个任务,一个在晚上,但是如果一个用户在机器上工作,并且不使用/ f参数,则不会触发。

而且,我同意你的说法。 Quickbooks是迄今为止我要求支持的最有问题的软件。 支持多用户环境的事实似乎是事后才想到的。