Taskscheduler COM互操作C#-登录任务
正在尝试使用TaskScheduler COM互操作库创建登录任务。 下面的代码没有为Taskscheduler COM互操作C#-登录任务,c#,scheduled-tasks,com-interop,C#,Scheduled Tasks,Com Interop,正在尝试使用TaskScheduler COM互操作库创建登录任务。 下面的代码没有为任务触发\u登录触发或任务触发\u会话\u状态更改触发创建任务 //create task scheduler instance TaskScheduler.TaskScheduler taskService = new TaskScheduler.TaskScheduler(); taskService.Connect(); ITaskDefin
任务触发\u登录
触发或任务触发\u会话\u状态更改
触发创建任务
//create task scheduler instance
TaskScheduler.TaskScheduler taskService = new TaskScheduler.TaskScheduler();
taskService.Connect();
ITaskDefinition taskDefinition = taskService.NewTask(0);
taskDefinition.Settings.Enabled = true;
taskDefinition.Settings.Compatibility = _TASK_COMPATIBILITY.TASK_COMPATIBILITY_V2_4;
//create trigger for task creation.
ITriggerCollection _iTriggerCollection = taskDefinition.Triggers;
ITrigger _trigger = _iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
_trigger.Enabled = true;
///get actions.
IActionCollection actions = taskDefinition.Actions;
_TASK_ACTION_TYPE actionType = _TASK_ACTION_TYPE.TASK_ACTION_EXEC;
//create new action
IAction action = actions.Create(actionType);
IExecAction execAction = action as IExecAction;
execAction.Path = @"calc.exe";
ITaskFolder rootFolder = taskService.GetFolder(@"\");
//register task.
rootFolder.RegisterTaskDefinition("test", taskDefinition, 6, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, null);
即使如此,如果触发器是TASK\u trigger\u TIME
,它也可以正常工作并创建任务
比如说,
//create trigger for task creation.
ITriggerCollection _iTriggerCollection = taskDefinition.Triggers;
ITrigger _trigger = _iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
_trigger.StartBoundary = DateTime.Now.AddSeconds(15).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
_trigger.EndBoundary = DateTime.Now.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
_trigger.Enabled = true;
成功了。如果有人对代码片段感兴趣,请点击这里
//create task service instance
TaskScheduler.TaskScheduler taskService = new TaskScheduler.TaskScheduler();
taskService.Connect();
ITaskDefinition taskDefinition = taskService.NewTask(0);
taskDefinition.Settings.Enabled = true;
taskDefinition.RegistrationInfo.Author = "Desklight";
taskDefinition.Principal.RunLevel = _TASK_RUNLEVEL.TASK_RUNLEVEL_LUA;
taskDefinition.Settings.AllowDemandStart = true;
taskDefinition.Settings.StartWhenAvailable = true;
taskDefinition.Settings.DisallowStartIfOnBatteries = false;
taskDefinition.Settings.Compatibility = _TASK_COMPATIBILITY.TASK_COMPATIBILITY_V2_4;
//create trigger for task creation.
ITriggerCollection _iTriggerCollection = taskDefinition.Triggers;
ISessionStateChangeTrigger sessionStateChangeTrigger = (ISessionStateChangeTrigger)_iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_SESSION_STATE_CHANGE);
sessionStateChangeTrigger.Id = "UnlockTrigger";
sessionStateChangeTrigger.StateChange = _TASK_SESSION_STATE_CHANGE_TYPE.TASK_SESSION_UNLOCK;
sessionStateChangeTrigger.UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
sessionStateChangeTrigger.Enabled = true;
//get actions.
IActionCollection actions = taskDefinition.Actions;
_TASK_ACTION_TYPE actionType = _TASK_ACTION_TYPE.TASK_ACTION_EXEC;
//create new action
IAction action = actions.Create(actionType);
IExecAction execAction = action as IExecAction;
execAction.Path = getExecutable(silent);
ITaskFolder rootFolder = taskService.GetFolder(@"\");
//register task.
const int TASK_CREATE_OR_UPDATE = 6;
string taskName = "Desklight-" + Environment.UserName;
rootFolder.RegisterTaskDefinition(taskName, taskDefinition, TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, null);
成功了。如果有人对代码片段感兴趣,请点击这里
//create task service instance
TaskScheduler.TaskScheduler taskService = new TaskScheduler.TaskScheduler();
taskService.Connect();
ITaskDefinition taskDefinition = taskService.NewTask(0);
taskDefinition.Settings.Enabled = true;
taskDefinition.RegistrationInfo.Author = "Desklight";
taskDefinition.Principal.RunLevel = _TASK_RUNLEVEL.TASK_RUNLEVEL_LUA;
taskDefinition.Settings.AllowDemandStart = true;
taskDefinition.Settings.StartWhenAvailable = true;
taskDefinition.Settings.DisallowStartIfOnBatteries = false;
taskDefinition.Settings.Compatibility = _TASK_COMPATIBILITY.TASK_COMPATIBILITY_V2_4;
//create trigger for task creation.
ITriggerCollection _iTriggerCollection = taskDefinition.Triggers;
ISessionStateChangeTrigger sessionStateChangeTrigger = (ISessionStateChangeTrigger)_iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_SESSION_STATE_CHANGE);
sessionStateChangeTrigger.Id = "UnlockTrigger";
sessionStateChangeTrigger.StateChange = _TASK_SESSION_STATE_CHANGE_TYPE.TASK_SESSION_UNLOCK;
sessionStateChangeTrigger.UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
sessionStateChangeTrigger.Enabled = true;
//get actions.
IActionCollection actions = taskDefinition.Actions;
_TASK_ACTION_TYPE actionType = _TASK_ACTION_TYPE.TASK_ACTION_EXEC;
//create new action
IAction action = actions.Create(actionType);
IExecAction execAction = action as IExecAction;
execAction.Path = getExecutable(silent);
ITaskFolder rootFolder = taskService.GetFolder(@"\");
//register task.
const int TASK_CREATE_OR_UPDATE = 6;
string taskName = "Desklight-" + Environment.UserName;
rootFolder.RegisterTaskDefinition(taskName, taskDefinition, TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, null);