以编程方式编辑计划任务

Edit scheduled task programmatically

我需要能够在没有用户交互的情况下编辑一些设置,例如这个:

我已经在创建它了:

using Microsoft.Win32.TaskScheduler;

/* ... */

try
{
    ScheduledTasks.RootFolder.DeleteTask("Task");
}
catch (Exception) { }
TaskDefinition TaskProperties = ScheduledTasks.NewTask();
TaskProperties.RegistrationInfo.Description = "Runs background stuff";
TaskProperties.Actions.Add(new ExecAction(Process.GetCurrentProcess().MainModule.FileName, "/background", null));
ScheduledTasks.RootFolder.RegisterTaskDefinition(@"Task", TaskProperties);

schtasks.exe 没有给出编辑它的方法,Task Scheduler Managed Wrapper, but the Task Scheduler GUI does, and there is also a C++ API 也没有。如何编辑这些设置?我真的不介意解决方案是否涉及 PInvoke。代码片段的奖金 <3。

注意:我不想导入单独的 XML 文件,因为 .exe 应该是独立的,并且某些元素可能因系统而异(例如,文件的位置)

Settings 下查找:

TaskProperties.Settings.DisallowStartIfOnBatteries = true;