我有一个使用 EPPlus 更新 Excel 文件的流程,当使用任务计划程序安排在特定时间运行时,这部分工作正常。
但是,现在我需要更新外部数据连接、数据透视表等,我正在使用 Excel Interop 来执行此操作。这就是问题开始的地方:只有当进程以交互方式运行时(即,当用户登录时),我才能成功运行这部分。
当我通过任务计划程序运行它并设置“仅在用户登录时运行”时,它可以工作,但如果我关闭连接,或者 AWS 工作区重新启动,任务将无法启动,并出现错误“启动条件不正确”已满足,用户未登录。”我尝试过使用 PsExec,它几乎解决了问题,但它引入了新问题。
我的问题是:有没有办法在 Windows 上安排涉及运行 Excel Interop 等交互式进程的任务?我愿意开发 Windows 服务,但我怀疑我会遇到类似的问题。
有人对确保 Excel Interop 可以通过任务计划程序或其他方法成功运行的最佳方法有建议吗?
我的尝试和结果:
对于将来遇到此问题的任何人:可以通过非交互式任务运行 Interop。我能够通过调整 CSOM 设置来使其工作。步骤如下:
将打开一个新窗口。现在按照以下步骤配置权限:
常规选项卡:
确保身份验证级别设置为默认。 安全选项卡:
在“启动和激活权限”下,单击“自定义”,然后单击“编辑”。
添加运行任务计划程序作业的用户帐户并授予其以下权限:
本地启动:允许 远程启动:(仅当您计划从另一台计算机运行 Excel 时) 本地激活:允许 远程激活:(仅当从另一台计算机运行时) 在访问权限下,单击自定义,然后单击编辑。
添加运行任务的用户或服务帐户,并根据需要为其授予访问权限。 身份标签:
在此处选择您希望 Excel 运行的方式。您有三个选择: 交互式用户:仅当用户登录时才运行 Excel。 启动用户:这将使用启动任务的用户运行 Excel。 此用户:您可以指定特定的用户帐户(提供用户名和密码)来运行 Excel。 如果您希望 Excel 作为后台任务运行,请选择此用户并提供具有必要权限的用户的凭据。
打开服务(按Win + R,输入services.msc,然后按Enter)。 查找 DCOM 服务器进程启动器。 右键单击并选择重新启动。