除非使用“以管理员身份运行”,否则在Windows 10上以编程方式创建计划任务失败

时间:2017-06-22 13:08:17

标签: c# windows scheduled-tasks taskscheduler

我参与的应用程序将任务添加到Windows Task Sheduler。它在Windows 7上运行正常,但在Win 8.1和Win 10上,访问被拒绝,除非使用“以管理员身份运行”。

必须使用“以管理员身份运行”权限启动应用才能创建计划任务。

我无法分享代码,因为它不属于我。无论如何,也许有人可以回答它。

我的意思是,在Windows 8.1(及更高版本)中,计划任务的权限级别已更改,并且需要管理权限。但是我找不到它的证明以及在没有管理员权限的情况下以编程方式在Windows 10中添加计划任务的任何可能的替代方案。

代码使用Microsoft.Win32.TaskScheduler lib。下面的代码被简化,以显示它的编写方式和类/参数。

    var taskDefinition = Microsoft.Win32.TaskScheduler.TaskService.NewTask();
    taskDefinition.Principal.LogonType = Microsoft.Win32.TaskScheduler.TaskLogonType.S4U; 
    taskDefinition.Principal.UserId = "";

然后它添加了动作和触发器

    taskDefinition.Actions.Add(executeAction);
    taskDefinition.Triggers.Add(trigger);

然后注册任务

    Microsoft.Win32.TaskScheduler.TaskService.RootFolder.RegisterTaskDefinition(taskName, taskDefinition);

1 个答案:

答案 0 :(得分:0)

作为该库的作者,我可以确认权限上下文在Windows 8中已更改。但是,您的方向正确。该库可帮助您简化操作。请尝试以下操作,无论代码是否提升运行,它都应在所有Windows版本上运行: var trigger = new DailyTrigger(1); var action = new ExecAction(exePath); TaskService.Instance.AddTask(taskName,trigger,action);