默认情况下,Windows计划任务是在“仅在计算机接通交流电源的情况下才启动任务”设置下创建的。
无法使用schtasks.exe
更改此设置,这本来是简单的解决方案。但是,似乎可以通过Windows API ITaskSettings::get_DisallowStartIfOnBatteries
方法执行此操作。是否可以将其导入到Inno设置中以在现有计划任务上禁用此设置,并允许它在计算机由电池供电时运行?如果是这样,将如何进行?还是有其他方法可以使用Inno Setup更改此设置?
答案 0 :(得分:1)
实际上,可以使用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>
有关更多信息,请参见How to add a scheduled task on network connection/disconnection event with Inno Setup。
我没有找到使用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;