如何以编程方式安排任务

时间:2012-01-02 12:17:55

标签: delphi delphi-7 scheduled-tasks

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

2 个答案:

答案 0 :(得分:7)

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

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

执行以下命令:

  

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

     

/删除 - 删除任务
  / 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;

答案 1 :(得分:-1)

在这里找出问题它可以正常工作

在Windows 7 Pro上进行测试,如果有任何人可以在XP PRO上测试我,那么

procedure ScheduleRunAtStartup(const ATaskName: string; const AFileName: string;
  const GetPCName: string ; Const GetPCUser: String);
begin
  ShellExecute(0, nil, 'schtasks', PChar('/delete /f /tn "' + ATaskName + '"'),
    nil, SW_HIDE);
  ShellExecute(0, nil, 'schtasks', PChar('/create /tn "' + ATaskName + '" ' + '/tr "' + QuotedStr(AFileName) + '" /sc ONLOGON /ru "' + GetPCName+'\'+GetPCUser + '"'), nil, SW_HIDE)
end;