我正在帮助一家小型企业管理系统,该企业(不幸的是)使用 QuickBooks 14 来管理其会计。
另外,是不是只有我一个人觉得 QuickBooks 是现存编程最差的流行客户端-服务器应用程序之一?Intuit 赚的钱还不够多,以至于他们无法编写真正的客户端-服务器应用程序,而不是让用户直接通过 SMB 访问存储?
用户使用在 Win2k8R2 上运行的 RDP 服务器访问公司文件,该文件位于专用于托管文件的单独服务器上。
我已经在 QuickBooks 中设置了计划备份功能来安排夜间备份。
不幸的是,备份偶尔会失败 - 但错误消息几乎没有提供任何有用的信息 - 并且我相当确定没有网络/NTFS 权限/共享权限问题阻止备份,如果有,备份每次都会失败。
我很迷信,相信只要所有用户都注销,备份每次都会成功。我从未见过用户注销后备份失败的情况。
问题是我只知道如何taskkill
通过编程注销用户;我知道程序中有一个按钮可以执行此操作,但我需要它在备份之前作为计划任务运行。我不想taskkill
每晚都使用,因为我觉得这可能会导致数据问题。
如何以编程方式优雅地结束 QuickBooks 中所有用户的会话?
答案1
这个问题已经很晚了,但我们不久前找到的解决方案是使用计划任务来终止 Quickbooks 进程。虽然“终止”听起来很强烈,但它似乎可以优雅地关闭应用程序。
对于我们的实施,我们使用组策略将此计划任务应用于所有 Quickbooks 用户。
- 命令:taskkill.exe
- 参数:/f /im QBW32.EXE
我们以本地登录用户的身份运行它;因为它处于用户上下文中,所以我认为它会执行您想要的操作,而不会干扰用户登录 RDP。我们实际上安排了两个任务,一个在晚上早些时候执行,但如果用户正在计算机上积极工作并且不使用 /f 参数,则不会触发该任务。
而且,我同意你的补充;Quickbooks 是迄今为止我被要求支持的问题最多的软件。它支持多用户环境这一事实似乎是事后才想到的。
答案2
我确信,为了运行备份,QB 必须将自身置于单用户模式。如果其他用户登录到 QB,则它无法执行此操作。
您可能考虑的一件事是使用 RDP 的空闲和断开连接会话限制来终止一段时间内处于空闲或断开连接状态的用户会话。这样,如果用户回家时留下一个正在运行的会话,该会话将在一段时间后被终止。这将终止服务器上允许 QB 执行备份的任何 QB 实例。
答案3
如果您是管理员,请打开您的 Messenger(聊天)。在右上角选择“操作”,然后选择“为其他用户关闭公司文件”。它将提供已登录用户的列表。您可以根据需要选择任意数量。(如果您需要切换到单用户模式,则选择全部。
我经常遇到远程用户在退出远程连接时忘记注销的情况。找到这个工具可以避免很多麻烦。