C ++ Win32 Schedule Task因XML错误而失败

|| 我对Windows Task Scheduler不满意,并尝试安排登录时执行的任务。 因此,我已经从MSDN复制并粘贴了有关如何执行此操作的确切示例代码-http://msdn.microsoft.com/zh-cn/library/aa381911(v=VS.85).aspx-我指定了用户代码示例中的用户名和密码。运行它时,出现错误“无法保存任务:80041318” 感谢另一个问题的人,我现在知道这个错误的意思是:   任务XML包含格式错误或超出范围的值 现在我不知道这意味着什么,我在代码中做错了什么,特别是当99%是示例MSDN代码的直接副本时? 也许我需要正确设置用户名和密码的格式,因为它们是BSTR或VARIANT? 我将仅发布对代码所做的更改,但要查看整个代码,请访问http://msdn.microsoft.com/zh-cn/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;
}
    
已邀请:
        我不确定这是否是导致您出错的原因,但是请查看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作为密码。     

要回复问题请先登录注册