首页 > 解决方案 > 任务运行——使用SYSTEM还是Administrator用户?

问题描述

我们有一个按计划运行的应用程序,在任务计划程序中设置。此任务由我们的配置应用程序以编程方式创建。

现在,应用程序需要访问特定目录中的文件,默认路径是当前登录用户主目录中的子目录。

我们已尝试使用 SYSTEM 帐户进行设置,但它无权访问文件,并且任务在运行后立即退出。

通常,我们使用管理员的密码和标志设置它以在用户登录或未登录时运行。然而,一些客户在不需要登录的系统上安装这个应用程序,这意味着有一个空白或没有密码。如果我们设置任务并手动将其更改为在没有登录的情况下运行,则需要某种密码。

我如何以编程方式(使用 C# 或 VB.net)创建此任务以在它不会运行的地方运行:

  1. 需要管理员或用户密码才能运行或设置
  2. 能够访问“几乎”任何目录中的文件
  3. 无论任何用户是否登录都能够运行
  4. 不需要创建一个新用户来运行它

安装的系统范围从 Windows Server 2008 到 Windows 10。

标签: c#windowsvb.netscheduled-tasks

解决方案


从您的问题来看,您似乎正在描述 Window 服务的用例。

具体来说,您需要一个可以运行的程序:

  • 无需用户交互
  • 无论用户是否登录
  • 具有访问可能受 UAC 限制的文件系统部分所需的权限。

构建 Windows 服务将为您提供此功能,而无需模拟用户或处理存储管理员帐户凭据(尽管您需要具有最初安装它的权限)。

您可以使用任何 .Net 语言(包括 C# 和 VB.NET)构建服务。 Topshelf是一个非常好的库,用于在 .net 中构建 Windows 服务,我链接到的教程/文档可以帮助您入门。


推荐阅读