尝试创建新的任务计划程序任务时抛出异常

时间:2010-05-12 11:57:00

标签: c# com-interop

我正在尝试在C#中的Windows任务计划程序中创建一个新任务。到目前为止我所拥有的只是http://bartdesmet.net/blogs/bart/archive/2008/02/23/calling-the-task-scheduler-in-windows-vista-and-windows-server-2008-from-managed-code.aspx

的复制和粘贴

所有内容编译得很好,但是运行时我得到以下异常:

无法将“System .__ ComObject”类型的COM对象强制转换为接口类型“TaskScheduler.ITimeTrigger”。此操作失败,因为对IID为“{B45747E0-EBA7-4276-9F29-85C5BB300006}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE))

这是所有代码,所以你可以在不遵循上述链接的情况下看到我在这里做的事情。

TaskSchedulerClass Scheduler = new TaskSchedulerClass();

Scheduler.Connect(null, null, null, null);

ITaskDefinition Task = Scheduler.NewTask(0);

Task.RegistrationInfo.Author = "Test Task";

Task.RegistrationInfo.Description = "Just testing this out.";

ITimeTrigger Trigger = (ITimeTrigger)Task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);

Trigger.Id = "TestTrigger";

Trigger.StartBoundary = "2010-05-12T06:15:00";

IShowMessageAction Action = (IShowMessageAction)Task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_SHOW_MESSAGE);

Action.Id = "TestAction";

Action.Title = "Test Task";

Action.MessageBody = "This is a test.";

ITaskFolder Root = Scheduler.GetFolder("\\");

IRegisteredTask RegisteredTask = Root.RegisterTaskDefinition("Background Backup", Task, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, "");

抛出异常的行是这一行

ITimeTrigger Trigger = (ITimeTrigger)Task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);

异常消息对我有意义,但我担心我对COM的了解不足以真正知道从哪里开始。

另外,我应该补充说我正在使用VS 2010而且我必须将项目设置为x86或x64 CPU而不是通常的“Any CPU”,因为它一直给我一个BadImageFormatException。我怀疑这与我目前的问题有关,但万一我认为我不妨提及它。

1 个答案:

答案 0 :(得分:2)

您正在使用不同的枚举值,对于TASK_TRIGGER_DAILY,您将获得IDailyTrigger,而不是ITimeTrigger

this MSDN page