作为非管理员用户在Windows中运行定期任务的最佳方法?

时间:2017-09-20 12:31:52

标签: c# windows

我的印象是,Scheduled Tasks是运行C#'sync'服务(发出REST请求并写入MySQL数据库)的最佳方式,每半小时运行一次。但是,似乎在Windows 10中,我需要调整非管理员用户的权限('作为批处理'运行权限)才能实现这一点(在早期版本的Windows中并非如此) ?)。另一方面,如果我以管理员的身份安排任务,那么非管理员甚至看不到任务,更不用说获得最后的运行时间和结果了。因此,除了将结果写入日志或其他内容之外,非管理员用户无法查看任务是否存在或已成功运行。

我想我可能会回到在经常运行的应用程序中使用计时器。是否有更“有效”的方式?

1 个答案:

答案 0 :(得分:0)

这里不要太困惑。任务既有所有者,也有他们运行的用户。默认情况下,只有作业和管理员的所有者才能查看/执行作业。所有者默认为创建作业的用户。

管理员可以使用本地组策略手动授予非管理员用户所需的权限。可以通过打开本地安全政策来访问此政策。在本地安全策略窗口中,依次单击本地策略用户权限分配,然后单击以批处理登录作业。您可以在此处添加用户,除非更高级别的组策略阻止此操作。

或者,您可以将任务作为“NT Authority \ Local Service”运行,这是一个非管理员帐户,隐含地具有所需的priveledge。您必须将其设置为管理员。当然,这意味着管理员将拥有这份工作。

可以为普通用户提供查看/执行作业的权限。为此,管理员应将任务定位在磁盘上(它将在C:\windows\system32\tasks目录中找到),并使用安全选项卡将“读取和执行”授予“用户”或根据需要授予特定用户。

默认情况下,Microsoft实际上会执行某些任务,即使任务以SYSTEM权限运行(尽管显然他们让安装程序更改了任务文件的安全性,而不是手动执行)。