2011-06-18 31 views
0

的我與Windows任務計劃&試圖安排任務,當我登錄到執行擺弄。C++的Win32計劃任務失敗,因爲糟糕的XML

所以我抄&從MSDN粘貼確切的示例代碼關於如何執行此操作 - http://msdn.microsoft.com/en-us/library/aa381911(v=VS.85).aspx - 我在代碼示例中指定了我的用戶名&我的密碼。當我運行它,我得到「無法保存的任務:80041318」錯誤

由於人在另外一個問題我做了我現在知道這個錯誤是指:

任務XML包含一個值,該值錯誤地格式化或超出範圍

現在我不知道這是什麼意思,我在代碼中做錯了什麼,特別是當99%是示例MSDN代碼的直接副本?

也許我需要格式化我的用戶名&密碼是否正確,因爲它們是BSTR或VARIANT的?

我會後我只對代碼所做的更改,但看到整個代碼去http://msdn.microsoft.com/en-us/library/aa381911(v=VS.85).aspx

hr = pLogonTrigger->put_UserId(_bstr_t(L"soribo")); // soribo is my username 
pLogonTrigger->Release();        // line 221 

hr = pRootFolder->RegisterTaskDefinition( // line 289 
     _bstr_t(wszTaskName), 
     pTask, 
     TASK_CREATE_OR_UPDATE, 
     _variant_t(L"soribo"), // put in my windows username again (I'm the admin) 
     _variant_t(L"XXXXXX"), // put in my user password & no its not really XXXXXX :P 
     TASK_LOGON_GROUP, 
     _variant_t(L""), 
     &pRegisteredTask); 

我不明白的地方XML進來,因爲這是C++的Win32代碼?

編輯:顯示pTask相關的代碼:注意我並沒有改變任何這一點,所以它從MSDN

// Create the task builder object to create the task. 
ITaskDefinition *pTask = NULL; 
hr = pService->NewTask(0, &pTask); 

pService->Release(); // COM clean up. Pointer is no longer used. 
if (FAILED(hr)) 
{ 
    printf("Failed to create a task definition: %x", hr); 
    pRootFolder->Release(); 
    CoUninitialize(); 
    return 1; 
} 
+0

XML位於pTask屬性中。你能告訴你如何初始化pTask? – John

+0

@John:在pTask init的問題中查看編輯 – Mack

回答

0

示例代碼,我不知道這是你錯誤的原因,但望着ITaskFolder::RegisterTaskDefinition和你的代碼的文檔:

hr = pRootFolder->RegisterTaskDefinition( // line 289 
     _bstr_t(wszTaskName), 
     pTask, 
     TASK_CREATE_OR_UPDATE, 
     _variant_t(L"soribo"), // put in my windows username again (I'm the admin) 
     _variant_t(L"XXXXXX"), // put in my user password & no its not really XXXXXX :P 
     TASK_LOGON_GROUP, 
     _variant_t(L""), 
     &pRegisteredTask); 

我看你使用TASK_LOGON_GROUP,而是傳遞一個用戶名密碼。如果使用TASK_LOGON_GROUP,則應該使用組的名稱(如L"Builtin\\Administrators"L"S-1-5-32-545")和VT_NULL作爲密碼。