通过 LocalService 用户从 MVC 创建计划任务有时会失败

Creating Scheduled Task from MVC sometimes fails via LocalService user

我正在使用 c# TaskService 命名空间从 MVC 应用创建一个 Windows 计划任务。

如果 IIS AppPool 设置为 运行 作为 LocalService 用户,它通常工作正常,但有时我们会发现服务器无法创建计划任务。如果我们将 AppPool 用户更改为本地(管理员)用户,那么它就可以工作了。但我更愿意 运行 某种系统用户下的 AppPool。

我还没有任何具体的错误消息,因为我无法自己复制错误。

是否有任何rigths/settings/permissions会导致LocalService用户无法创建计划任务?

(PS: LocalSystem 和 IIS AppPool 用户也不起作用)

using (TaskService ts = new TaskService())
{
    TaskDefinition td = ts.NewTask();
    td.RegistrationInfo.Description = "My Task";

    var trigger = new RegistrationTrigger() { Delay = TimeSpan.FromSeconds(1) };
    trigger.Repetition.Interval = new TimeSpan(1, 0, 0));
    td.Triggers.Add(trigger);

    td.Actions.Add(new ExecAction("C:\Folder\program.exe"));
    td.Settings.AllowDemandStart = task.AllowDemandStart;
    td.Settings.Hidden = task.Hidden;
    ts.RootFolder.RegisterTaskDefinition("My Task", td);  //Assumption is that error happens on this line
}

我不能将其作为重复项关闭,因为它有赏金;但作为参考,这已在此处得到回答

Permissions required to create/modify tasks in Windows Task Scheduler

"The account needs to have read/write permissions to the "Tasks”目录。路径如下: %SystemRoot%\system32\Tasks\

但是,还有一个问题是 Windows Server 2003 不喜欢我将本地系统指定为任务 运行 所在的帐户。它似乎不喜欢我传递一个空密码,这是您指定本地系统的方式。我通过在服务器上为 运行 下的任务创建一个本地帐户并指定这个新帐户来解决这个问题。"