如何以编程方式安排任务

use*_*395 7 delphi scheduled-tasks delphi-7

如何使用delphi 7(如Google更新程序)安排任务?
我没有使用注册表,因为它被卡巴斯基反病毒软件检测为虚警.
我在注册表中添加的任何启动项都会被检测为特洛伊木马,因此我决定使用任务计划

TLa*_*ama 8

以下代码显示了如何删除和创建将在系统启动时以系统权限运行应用程序的任务.它使用以下命令行:

但是,自Windows Vista以来,任务计划程序支持强制创建任务,我不会将其用于向后兼容Windows XP,因为Windows XP不存在此标志.因此,下面的示例尝试删除任务(如果已存在),然后创建新任务.

它执行以下命令:

schtasks/delete/f/tn"myjob"
schtasks/create/tn"myjob"/ tr"C:\ Application.exe"/ sc ONSTART/ru"System"

/ delete - 删除任务
/f - 禁止确认
/创建 - 创建任务参数
/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;
Run Code Online (Sandbox Code Playgroud)