不以物喜,不以己悲

计划任务

计划任务

Schtasks

schtasks命令可以用来管理计划任务,允许管理员创建、删除、查询、更改、运行和终止本地或远程系统上的计划任务。

参数列表:

/Create 创建新计划任务。

/Delete 删除计划任务。

/Query 显示所有计划任务。

/Change 更改计划任务属性。

/Run 按需运行计划任务。

/End 终止当前正在运行的计划任务。

/ShowSid 显示与计划的任务名称相应的安全标示符。

/? 显示帮助消息。

如需获取每个参数的帮助信息,都可以在参数后面加/?来获取更多帮助。例如:

schtasks /create /?

具体参数列表这里就不放了。

放个示例命令:

schtasks /create /sc ONLOGON /tn testName /tr "c:\wo.exe" /f /rl Highest

这样就创建了名称为testName,在用户登录的时候以最高权限运行c:\wo.exe程序。

bat脚本执行计划任务

示例如下:

@echo off
Echo "开始运行"
Echo %1
Echo %2
schtasks /create  /SC ONLOGON /TN %1 /TR '%2' /F /RL HIGHEST

其中%1代表第一个传入的参数,这里我作为计划任务的名称。%2表示第二个传入的参数,这里我作为计划任务要启动的应用程序。

其中要注意的是路径中如果有空格必须要将路径使用""包起来。

nsis中执行bat脚本的计划任务
Exec "$INSTDIR\TaskAuto.bat Test $\"$INSTDIR\Test.exe$\""

其中要使用$\来转义"。

C#管理计划任务

在C#中可以使用TaskScheduler库来管理计划任务。

简单示例:

 /// <summary>
        /// 创建登录运行程序
        /// </summary>
        /// <param name="name">计划任务名称</param>
        /// <param name="exePath">运行程序路径</param>
        /// <param name="description">计划描述</param>
        public static void CreateOnlogonTask(string name, string exePath, string description = null)
        {
            Microsoft.Win32.TaskScheduler.TaskService service = new Microsoft.Win32.TaskScheduler.TaskService();
            Microsoft.Win32.TaskScheduler.TaskDefinition td = service.NewTask();
            Microsoft.Win32.TaskScheduler.LogonTrigger logonTrigger = new Microsoft.Win32.TaskScheduler.LogonTrigger();
            logonTrigger.Delay = TimeSpan.FromSeconds(30);//延时30秒执行
            td.Triggers.Add(logonTrigger);//添加触发器
            Microsoft.Win32.TaskScheduler.ExecAction execAction = new Microsoft.Win32.TaskScheduler.ExecAction(exePath);
            td.Actions.Add(execAction);//添加操作项
            td.RegistrationInfo.Description = description;//任务描述
            td.Principal.RunLevel = Microsoft.Win32.TaskScheduler.TaskRunLevel.Highest;//最高权限运行
            service.RootFolder.RegisterTaskDefinition(name, td);
        }
posted @ 2020-01-13 11:37  这种人  阅读(549)  评论(0编辑  收藏  举报