Inno Setup 在电池供电时将现有的 Windows 计划任务更改为 运行

Inno Setup change an existing Windows Scheduled Task to run when on battery power

默认情况下 Windows 计划任务是在 'Start the task only if the computer is on AC power' 设置启用的情况下创建的。

无法使用 schtasks.exe 更改此设置,这本来是简单的解决方案。但是,似乎可以通过 Windows API ITaskSettings::get_DisallowStartIfOnBatteries 方法来执行此操作。是否可以将其导入 Inno Setup 以在 现有 计划任务上禁用此设置,并允许它在计算机使用电池电源时 运行?如果是这样,这将如何完成?或者有其他方法可以使用 Inno Setup 更改此设置吗?

实际上,可以使用 schtasks 设置该选项。您只需要使用 XML 任务定义即可。

对于您的特定选项,您需要将 DisallowStartIfOnBatteries 设置为 false:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <!-- ... -->
  <Settings>
    <!-- ... -->
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  </Settings>
</Task>

有关更多信息,请参阅


我没有找到使用 API 修改现有任务的方法。这没有任何效果:

var
  TaskService: Variant;
  Folder: Variant;
  Task: Variant;
begin
  TaskService := CreateOleObject('Schedule.Service');
  TaskService.Connect();
  Folder := TaskService.GetFolder('\');
  Task := Folder.GetTask('test');
  Task.Definition.Settings.DisallowStartIfOnBatteries := False;
end;