/// <summary>

/// 1.引用:C:\Windows\System32\taskschd.dll
/// 2.属性:嵌入互操作类型=False
/// 3.命名空间:using TaskScheduler;
/// <para>启用或禁用任务计划,或修改任务计划的执行时间</para>
/// </summary>
private bool updateTaskSchedule(bool enabled,datetime starttime)
{
bool flag = false;
try
{
string username =ConfigurationManager.AppSettings["username"];
string password = ConfigurationManager.AppSettings["password"];
//1.连接TaskSchedulerClass
TaskSchedulerClass ts = new TaskSchedulerClass();
ts.Connect(
ConfigurationManager.AppSettings["BatchCalculateInterestIP"],//电脑名或者IP
username,//用户名
ConfigurationManager.AppSettings["BatchCalculateInterestDomain"], //域名
password);//密码
//2.获取计划任务文件夹(参数:选中计划任务后'常规'中的'位置',根文件夹为"\\")
ITaskFolder folder = ts.GetFolder("\\");
IRegisteredTaskCollection tasks = folder.GetTasks(1);
bool findFlag = false;//是否找到相应名称的任务计划
string taskSchedulerName =ConfigurationManager.AppSettings["taskSchedulerName"];//任务计划名称
for (int i = 1; i <= tasks.Count; i++)
{
IRegisteredTask t = tasks[i];
if (t.Name == taskSchedulerName)
{
findFlag = true;

#region 启用或停用任务计划程序
if (!enabled && t.Enabled)
{
t.Enabled = false;//禁用
}
else if (enabled && !t.Enabled)
{
t.Enabled = true;//启用
}
#endregion

#region 修改任务计划执行的时间
ITaskDefinition definition = t.Definition;
DateTime start = Convert.ToDateTime(definition.Triggers[1].StartBoundary);
if (start != starttime)
{
//清除
//definition.Triggers.Clear();
//添加
//definition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);

ITrigger trigger = definition.Triggers[1];

trigger.StartBoundary = starttime.ToString("yyyy-MM-dd HH:mm:ss");
//更新触发器
folder.RegisterTaskDefinition(taskSchedulerName, definition, (int)_TASK_CREATION.TASK_UPDATE,
username,//user
password,//password
_TASK_LOGON_TYPE.TASK_LOGON_PASSWORD, "");

}
#endregion

flag = true;
break;
}

}

return flag;
}
catch(Exception ex)
{
return flag;
}
}

posted on 2019-10-16 16:20  cathy_ming  阅读(559)  评论(0编辑  收藏  举报