我正在摆弄Windows任务计划程序&我在登录时尝试安排执行任务。
所以我复制了&粘贴了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 :(得分: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作为密码。