Следующий фрагмент кода показывает, как удалить и создать задачу, которая будет запускать приложение при запуске системы с системными привилегиями.Он использует следующую командную строку:
Однако планировщик задач, поскольку Windows Vista поддерживает принудительное создание задач, я бы не использовал его для обратной совместимости с Windows XP, где этот флаг не существует.Таким образом, приведенный ниже пример пытается удалить задачу (если она уже существует), а затем создать новую.
Он выполняет следующие команды:
schtasks / delete / f /tn "myjob"
schtasks / create / tn "myjob" / tr "C: \ Application.exe" / sc ONSTART / ru "System"
/ delete - удалить задачу
/ f- подавить подтверждение
/ create - создать параметр задачи
/ tn - уникальное имя задачи
/ tr - имя файла исполняемого файла
/ sc - тип расписания, ONSTART - запустить при запуске
/ ru - запускать задачу под разрешениями указанного пользователя
А вот код:
uses
ShellAPI;
procedure ScheduleRunAtStartup(const ATaskName: string; const AFileName: string;
const AUserAccount: string);
begin
ShellExecute(0, nil, 'schtasks', PChar('/delete /f /tn "' + ATaskName + '"'),
nil, SW_HIDE);
ShellExecute(0, nil, 'schtasks', PChar('/create /tn "' + ATaskName + '" ' +
'/tr "' + AFileName + '" /sc ONSTART /ru "' + AUserAccount + '"'),
nil, SW_HIDE);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ScheduleRunAtStartup('myjob', 'C:\Application.exe', 'System');
end;