C#创建windows任务计划程序2种方法(兼容win7、win10)

摘要:
允许的最短时间为一分钟。如果TimeSpan。如果指定了零,则模式将无限重复//参数3:获取或设置一个布尔值,该值指示正在运行的任务实例在重复模式持续时间结束时停止。重复模式请求=新重复模式;td.Triggers.Add;td.Actions.Add;ts.RootFolder.RegisterTaskDefinition;}}II在系统C:WindowsSystem32下查找DLL:taskschd.DLL,并将其引用到项目:publicstaticvoidCreateTaskScheduler{try{LogEvent.LogInfo.TFatal;stringtaskName=“HelperTray2”;TaskSchedulerClassscheduler=newTaskSchedulerClass();//pc name/ip,username,domain,passwordscheduler.Connect;ITaskFolderfolder=scheduler.GetFolder(“”);IRegisteredTaskrt=null;try{//搜索不起作用在会议上引发异常rt=folder.GetTask;if(rt!=null)return;}catch{LogEvent.LogInfo.Info;}LogEvent.RogInfo.Ftal;//setbaseattrITaskDefinitiontask=scheduler.NewTask;//task.RegistrationInfo.Author=“system”;//creatortask.RegistrationInfo.Description=任务名称;//Settrigger设置小时/分钟/秒以实现//ITimeTrigger=任务。触发器。创建//tt.Retition.Interval=间隔;//FormatPT1H1M==1小时1分钟。设置值最终将转换为分钟并添加到触发器中//设置每天执行IDailyTrigger=任务的具体时间。触发器。创造tt.StartBoundary=字符串格式;tt.EndBoundary=string.Format;//tt.Retition=newRepetitionPattern//starttime//setactionIExecActionaction=task.Actions.Create;action.Path=“wscript.exe”;stringvbsStart=路径.Combine;//ApiConfig.ExtPathaction.Arguments=vbsStart;//如果没有,则无法写入运行程序所需的参数。

一:NuGet中搜索包:Microsoft.Win32.TaskScheduler并引用:

        public static void RunTaskService(string vbsRootPath)
        {
            string taskName = "HelperTray1";
            TaskService ts = new TaskService();
            Microsoft.Win32.TaskScheduler.Task wsTask = ts.GetTask(taskName);
            if (wsTask == null)
            {


                string vbsStart = Path.Combine(vbsRootPath, "Start.vbs");//ApiConfig.ExtPath

                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = taskName;

                //开机后2分钟开始运行任务
                //td.Triggers.Add(new BootTrigger { Delay = new TimeSpan(0, 2, 0) });

                //参数1 Interval 间隔:每次重新启动任务之间的时间量。允许的最长时间为31天,允许的最短时间为1分钟
                //参数2 Duration 持续时间:重复模式的持续时间。允许的最短时间是一分钟。如果指定了TimeSpan.Zero,则该模式将无限期地重复。
                //参数3:获取或设置一个布尔值,该值指示正在运行的任务实例在重复模式持续时间结束时停止。
                RepetitionPattern repetition = new RepetitionPattern(new TimeSpan(0, 1, 0), TimeSpan.Zero, true);
                td.Triggers.Add(new DailyTrigger { Repetition = repetition });

                td.Actions.Add(new ExecAction("wscript.exe", vbsStart, null));
                ts.RootFolder.RegisterTaskDefinition(taskName, td);
            }
        }

二、在系统C:WindowsSystem32 下查找DLL:taskschd.dll并引用到项目中:

        public static void CreateTaskScheduler(string vbsRootPath)
        {
            try
            {
                LogEvent.LogInfo.Fatal("2创建计划任务:1");
                string taskName = "HelperTray2";
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                ITaskFolder folder = scheduler.GetFolder("\");
                IRegisteredTask rt = null;
                try
                {
                    //搜索不到会抛异常
                    rt = folder.GetTask(taskName);
                    if (rt != null)
                        return;
                }
                catch(Exception ex)
                {
                    LogEvent.LogInfo.Info("任务计划程序不存在,创建:");
                }
                
                LogEvent.LogInfo.Fatal("2创建计划任务:2");

                //set base attr 
                ITaskDefinition task = scheduler.NewTask(0);
                //task.RegistrationInfo.Author = "system";//creator 
                task.RegistrationInfo.Description = taskName;

                //set trigger  (IDailyTrigger ITimeTrigger) 设置小时/分/秒来实现
                //  ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                //  tt.Repetition.Interval = interval;// format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
                //设置每天特定的时间来实现 
                IDailyTrigger tt = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                tt.StartBoundary = string.Format("1970-05-01T{0}:00:00", "04");
                tt.EndBoundary = string.Format("2100-05-01T{0}:00:00", "04");
                //tt.Repetition= new RepetitionPattern
                //start time //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = "wscript.exe";
                string vbsStart = Path.Combine(vbsRootPath, "HelperStart.vbs");//ApiConfig.ExtPath
                action.Arguments = vbsStart;//运行程序时需要的参数,如果没有可以不写。
                task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时 
                task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行 
                task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行 
                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task, (int)_TASK_CREATION.TASK_CREATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, "");
                IRunningTask runTask = regTask.Run(null);
                //return runTask.State;
                LogEvent.LogInfo.Fatal("2创建计划任务:3");
            }
            catch (Exception ex)
            {
                LogEvent.LogInfo.Fatal("创建计划任务异常:"+ex);
                //throw ex; 
            }
        }

免责声明:文章转载自《C#创建windows任务计划程序2种方法(兼容win7、win10)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mac 下 apache设置latex,将某一小段设置为某字体,同时设置为另一种颜色,还加粗下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

软件开发行为规范-华为

软件开发行为规范   1 软件需求分析 2 软件项目计划 3 概要设计 4 详细设计 5 编码 6 需求管理 7 软件配置管理 8 软件质量保证 9 数据度量和分析   为了把公司已经发布的软件开发过程规范有效地运作于产品开发活动中,把各种规范“逐步形成工程师的作业规范”,特制定本软件开发行为规范,以达到过程控制的目的。 与软件开发相关的所有人员,包括各级...

关于Windows的任务计划管理

今天突然兴致勃勃地研究了一下Windows的任务计划程序,发现挺不错的! 用这个Windows自带程序,可以很人性化的详细地设置一些任务,例如启动某个程序、执行某条命令、在屏幕前端显示消息、甚至可以发送电子邮件。 另外,它与命令行的at命令是相关联的,at命令执行之后,这里就会添加一项任务。但要注意的是,at命令添加的是at服务,命名是At*(At1、At...

软件开发项目计划的制订

一、项目计划的要素根据PMBOK2000,项目计划可以包含如下要素:1、 项目范围说明项目范围说明阐述进行这个项目的原因或意义,形成项目的基本框架,使项目所有者或项目管理者能够系统地、逻辑地分析项目关键问题及项目形成中的相互作用要素,使项目干系人在项目开始实施前或项目相关文档编写以前,能够就项目的基本内容和结构达成一致;项目范围说明应当形成项目成果核对清单...

CODING 项目协同 2.0 —— 让协作有条不紊

本文为 CODING 高级产品经理王海明 在腾讯云 CIF 工程效能峰会上所做的分享。文末可前往峰会官网,观看回放并下载 PPT。 大家好,我是 CODING 高级产品经理王海明,今天与大家分享的是项目协同 2.0 的设计理念及应用场景。 研发团队现状 在一切上云的数字化时代,将诞生越来越多的软件公司和数字科技企业,传统研发管理方式和理念不能满足这些企业的...

MySQL查询性能优化

1.为什么查询速度为变慢 在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间。如果把查询看作是一个任务,那么他由一系列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行的次数,要么让子任务运行得更快。 MySQL在执行查询的时候有哪些子任务。哪些子任务运行的速度很慢,这里很难...

windows的定时任务设置

windows 的Schedule Task .创建配置 1.点击“開始” 2.点击“控制面板” 3.双击“任务计划” 4.双击“加入�任务计划” 5.到了“任务计划向导”界面,点击“下一步” 6.点击“浏览”选择须要定时执行的程序(exe文件,bat文件,com文件,sys文件)然后确定。 7.给此任务取个名称,也能够默认,而且选择多少时...