设置为以系统帐户运行时计划任务不起作用

Posted

技术标签:

【中文标题】设置为以系统帐户运行时计划任务不起作用【英文标题】:Scheduled task not working when set to run as SYSTEM account 【发布时间】:2016-09-20 00:51:11 【问题描述】:

我正在尝试使用 SYSTEM 帐户 (NT Authority\SYSTEM) 运行计划任务。此计划任务正在运行一个 exe 文件(Exe 文件适用于具有 3.5 框架的 .NET 应用程序,内置于 vb.NET 以执行某些任务。) 此计划任务设置为 - 1.每天跑一次 2.选项选择为“以最高权限运行” 3. 在 Action 选项卡中,Program/script 和 Start in(可选)两个值都已填写。

当任务在指定时间运行时,它显示“任务计划程序已成功完成任务“任务名称”、实例“Guid”、操作“exe 文件路径”,返回代码为 0。”在历史选项卡中。但是 exe 文件没有被执行,因为我看不到任何预期的结果。

当我在计划任务中将运行方式字段设置为我的凭据时,该任务正在运行并且能够正确运行 exe 文件。

但我需要使用SYSTEM帐户来运行计划任务。

这里的任何人都可以让我知道我需要什么才能使这个计划的任务正常工作。

【问题讨论】:

您需要使用SYSTEM来运行任务...为什么? Windows 对权限和安全性越来越谨慎,因此在用户会话之外运行计划任务总是变得越来越棘手(这是一个巨大的安全漏洞)。此外,听起来您的应用程序隐藏了错误 - 确保您的错误处理确实报告了问题(例如到事件日志)。 【参考方案1】:

“但是 exe 文件没有被执行,因为我看不到任何预期的结果”强烈表明你不知道你的代码是否被执行——你只是认为它没有被执行,因为它没有按你期望的那样工作。

几乎可以肯定,您的代码正在尝试访问 SYSTEM 帐户无权访问的资源。此链接RunAs A different user when debugging in Visual Studio 向您展示了如何在 VS.net 中运行您的程序并允许在以不同用户身份进行调试时进行调试。它应该允许您正确调试您的应用程序并了解它在 SYSTEM 用户帐户下是如何工作的。

【讨论】:

嗨飞利浦,感谢您的 cmets,但 SYSTEM 帐户(NT Authority\SYSTEM)没有任何密码,我如何使用 SYSTEM 帐户打开 Visual Studio,就像单击它要求的以其他用户身份运行一样用户名/密码 这篇文章解释了***.com/questions/21466060/… 另一个选项是像往常一样启动应用程序,然后使用“附加到进程”将调试器附加到进程。 (当然,您需要在应用程序启动时添加延迟,否则它会在您有机会附加调试器之前退出。) 在 SYSTEM 无权访问但管理用户可以访问的资源(文件、注册表项等)上运行是相对少见的。 (请记住,本地系统令牌包括 Administrators 组。)更有可能依赖于 SYSTEM 没有的东西,例如,有很多用户配置设置直到第一次资源管理器才创建启动。 (无论如何,您都需要一个调试器。+1。) 感谢大家的cmets。我尝试使用具有用户名和密码的服务帐户运行计划任务。然后我用那个服务账号打开visual,发现系统账号和服务账号无法访问sql server的错误。所以我遇到了问题并正在解决它。

以上是关于设置为以系统帐户运行时计划任务不起作用的主要内容,如果未能解决你的问题,请参考以下文章

调用 invalidate() 时计时器在 Android 中不起作用

每行设置 new.column 的 PLSQL 触发器不起作用

Blob 存储帐户的 Azure SAS 令牌不起作用

对银行交易产生利息。不同帐户的不同兴趣不起作用?

Azure 数据工厂 - 将查找值/ID 传递到 ForEach 复制任务不起作用

在受限用户帐户下运行程序