2010-05-12 103 views
2

我試圖在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嘗試創建新的任務調度程序任務時出現異常

一切的複製和粘貼彙編就好了不過來運行時,我得到以下異常:

無法投類型的COM對象「系統.__ ComObject」接口類型'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,而不是通常的「任何CPU」,因爲它一直給我一個BadImageFormatException。我懷疑這與我目前的問題有關,但以防萬一我想我可能會提及它。

回答

2

您正在使用不同的枚舉值,對於TASK_TRIGGER_DAILY,您將得到一個IDailyTrigger,而不是ITimeTrigger

請參閱this MSDN page

+0

啊!這解決了它。謝謝你的快速反應!現在我明白了什麼是錯誤的,這很明顯。 – seaneshbaugh 2010-05-12 12:28:16

相關問題