0
嗨我有一個程序,安排任務。雖然這在Windows7機器上運行良好,但會在XP上引發錯誤。Taskscheduler類不工作在XP
下面是代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TaskScheduler;
namespace MyTaskScheduler
{
class Program
{
static void Main(string[] args)
{
try
{
string STR_DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
string taskName = "MyTask";
string taskFolder = "MyTaskFolder";
Console.WriteLine("Creating task");
ITaskService taskScheduler = new TaskSchedulerClass();
taskScheduler.Connect(null, null, null, null);
ITaskFolder rootFolder = taskScheduler.GetFolder(@"\");
bool _found = false;
foreach (ITaskFolder fol in rootFolder.GetFolders(0))
{
if (fol.Name == taskFolder)
_found = true;
}
if (!_found)
rootFolder.CreateFolder(taskFolder, null);
ITaskFolder folder = rootFolder.GetFolder("\\" + taskFolder);
_found = false;
foreach (IRegisteredTask tsk in folder.GetTasks(0))
{
if (tsk.Name == taskName)
_found = true;
}
if (_found)
folder.DeleteTask(taskName, 0);
Console.WriteLine("Creating new task");
ITaskDefinition taskDef = taskScheduler.NewTask(0);
taskDef.RegistrationInfo.Description = "Opens notepad at the scheduled times";
taskDef.RegistrationInfo.Author = "Monica";
taskDef.Settings.Enabled = true;
taskDef.Settings.Hidden = false;
taskDef.Settings.DisallowStartIfOnBatteries = false;
taskDef.Settings.WakeToRun = true;
IWeeklyTrigger trigger = (IWeeklyTrigger)taskDef.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);
//if (intWeekDays != 0)
trigger.DaysOfWeek = (short)10;
trigger.Id = "MyTimeSet";
trigger.StartBoundary = DateTime.Now.Date.AddHours(10).AddMinutes(15).AddSeconds(20).ToString(STR_DateTimeFormat.Replace(" ", "T"));
IExecAction action = (IExecAction)taskDef.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
action.Id = "MyRun";
string actionFile = "notepad.exe";
action.Path = String.Concat("\"", actionFile, "\"");
action.Arguments = String.Format("argus \"{0}\"", "argument1");
IRegisteredTask regTask = null;
regTask = folder.RegisterTaskDefinition(taskName, taskDef, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, "");
Console.WriteLine("task created");
}
catch (Exception e1)
{
Console.WriteLine(e1.ToString());
}
}
}
}
當我運行XP機器上這個節目,我得到的錯誤是:
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {0F87369F-A4E5-4CFC-BD3E-73E6154572DD} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). at TaskScheduler.Program.Main(String[] args)
可有人提醒我要去哪裏錯在這裏。
感謝, 莫妮卡
嗨喬恩謝謝。但是因爲我需要該程序在XP上運行。有沒有辦法使用Task Schduler 1.0。我不介意改進代碼以適應Task Scheduler 1.0接口參數,只要我能夠安排任務即可。如何導入Task Scheduler 1.0接口 – Monica 2013-03-27 23:17:12