Cast exception when trying to create new Task Schedueler task
我正在尝试在 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)) .
这是所有代码,因此您无需点击上述链接即可看到我在此执行的操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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,""); |
抛出异常的行是这个
1 | ITimeTrigger Trigger = (ITimeTrigger)Task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY); |
异常消息对我来说有点道理,但恐怕我对 COM 的了解还不够,无法真正知道从哪里开始。
另外,我应该补充一点,我使用的是 VS 2010,我必须将项目设置为用于 x86 或 x64 CPU,而不是通常的"任何 CPU",因为它一直给我一个 BadImageFormatException。我怀疑这与我当前的问题有关,但以防万一我认为我不妨提一下。
您正在使用不同的枚举值,对于 TASK_TRIGGER_DAILY,您将得到一个
请参阅此 MSDN 页面。