最近我们将系统更新到 Office 2016。我有一个计划任务,读取 MS Access DB 中的信息,然后通过 Outlook 将此信息发送给邮件收件人。一切都很好,直到升级。
计划任务启动一个 .bat 文件,该文件打开 MS Access、调用函数、执行任务,然后使用 Outlook 通过电子邮件发送信息。
'c: cd\Program Files (x86)\Microsoft Office\Office16 msaccess.exe "C:\autojobs\autojobs2.accdb" /x AUTO_JOB_ACTIVEWITHNOACTIVEPRIME '
当我通过双击手动运行批处理文件时,它会按预期工作并发送电子邮件。但是,当我运行任务计划程序时,它不起作用。我确信它可以打开 MS Access 文件并且可以读取,但由于某种原因它无法发送电子邮件。我已经降低了所有安全设置,但没有效果。
计划任务以最高权限运行,升级前一切正常。当我将 Windows 任务计划程序中的属性更改为仅在用户登录时运行时,无论用户是否登录都运行。它工作完美。然而,在办公室升级之前,情况并非如此。
有人有什么建议吗?
Outlook 的安全设置将阻止应用程序以编程方式通过它发送电子邮件。它将使用弹出对话框来请求发送电子邮件的许可。虽然我已成功摆脱弹出窗口并让 Access 在 Outlook 打开时通过 Outlook 发送(手动和作为计划任务),但当 Outlook 尚未打开时,它仍然会失败。
如果您有能力,最好的选择是在运行计划任务的计算机上保持 Outlook 打开。否则,您必须尝试找出策略和注册表/Outlook 设置的哪种组合将使 Outlook 按您希望的方式工作。
编辑:我的经验是使用 Windows 域/本地交换服务器环境。
我们几周前升级到Office 2016,并遇到了与您相同的问题。我们的批处理文件运行 Access 并触发一个宏,将一些数据导出到文本文件,并且在手动运行时工作正常。然而,当通过任务计划程序运行时,一切“似乎”都运行良好,但文本文件从未更新。经过几周的尝试但没有成功,我终于找到了问题的原因和解决方案。 在我们的例子中,问题是 Access 2016 希望作为前台应用程序运行。但是,当作为任务计划程序应用程序运行时(选中“无论用户是否登录都运行”选项),它将自身视为后台应用程序,因此不会运行。有关更多信息,请参阅 Jim Dettman 的回答:
https://www.experts-exchange.com/questions/28988837/接下来,我找到了 Microsoft 员工 Blake Morrison 的
这篇文章,他在其中讨论了最新版本的任务计划程序中的更改。他的故障排除建议之一对我们有用:
尝试创建一个新任务,但选择“配置为:”选项 “Windows Server 2003、Windows XP 或 Windows 2000” – 这将创建 XP/2003 风格的任务不幸的是,您可能必须将其作为新任务来执行 - 现有任务似乎不允许您选择此选项(它没有显示在我现有任务的下拉菜单中)。所以我对新任务的设置是:
以管理员帐户运行