首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式调度任务

如何以编程方式调度任务
EN

Stack Overflow用户
提问于 2012-01-02 20:17:55
回答 2查看 13.4K关注 0票数 7

如何使用像Google updater这样的delphi 7调度任务?

我没有使用注册表,因为它会被卡巴斯基杀毒软件检测到是一个错误警报。

我在注册表中添加的任何启动项目都会被检测为特洛伊木马程序,因此我决定使用任务计划

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-03 18:19:31

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

但是,任务计划程序因为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 -取消确认

/create -创建任务参数

/tn -任务的唯一名称

/tr -可执行文件的文件名

/sc -调度类型,ONSTART -启动时运行

/ru -在指定用户的权限下运行任务

下面是代码:

代码语言:javascript
复制
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;
票数 9
EN

Stack Overflow用户

发布于 2012-01-03 23:01:44

解决了这里的问题它工作得很好

在Windows7专业版上测试,如果有人能在XP专业版上为我测试,我将不胜感激

代码语言:javascript
复制
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;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8700709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档