C++;从任务计划程序触发时CreateProcess失败 我有一个C++程序,使用CealPATAL。当我手动触发应用程序时,这可以正常工作。但是,当从任务调度器触发应用程序时,它返回错误代码6,此错误代码指的是什么

C++;从任务计划程序触发时CreateProcess失败 我有一个C++程序,使用CealPATAL。当我手动触发应用程序时,这可以正常工作。但是,当从任务调度器触发应用程序时,它返回错误代码6,此错误代码指的是什么,c++,scheduled-tasks,createprocess,C++,Scheduled Tasks,Createprocess,在网上我找不到任何与错误代码对应的消息 我使用的代码是: int StartCommand(char* Command) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); bool CommandStatus = CreateProces

在网上我找不到任何与错误代码对应的消息

我使用的代码是:

int StartCommand(char* Command) {
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    bool CommandStatus = CreateProcess(NULL, Command, NULL, NULL, FALSE, CREATE_NO_WINDOW | CREATE_SUSPENDED | CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &si, &pi);
    AssignProcessToJobObject(FilerHandle, pi.hProcess); // Does not work if without CREATE_BREAKAWAY_FROM_JOB
    ResumeThread(pi.hThread);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    if (CommandStatus) {
        return pi.dwProcessId;
        }
    cout << GetLastError() << endl; //RETURNS ME 6
    Message = "Couldn't start command!";
    Exit(Message);
    return 0;
    }
int StartCommand(char*命令){
STARTUPINFO si;
处理信息;
零内存(&si,sizeof(si));
si.cb=sizeof(si);
零内存(&pi,sizeof(pi));
bool CommandStatus=CreateProcess(NULL,Command,NULL,NULL,FALSE,CREATE_NO_WINDOW | CREATE_SUSPENDED | CREATE_breakout_FROM_JOB,NULL,NULL,&si,&pi);
AssignProcessToJobObject(FilerHandle,pi.hProcess);//如果没有从作业中创建分离,则不工作
恢复线程(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
如果(命令状态){
返回pi.dwProcessId;
}

cout-通过搜索win32错误代码找到。但无法确定设置它的行,可能是CloseHandle(),这使它变得无用。您需要检查所有返回值的错误并调用GetLastError()调用失败后,它立即变得有用。@RetiredInja,为什么手动和自动触发不同?我不知道。我不知道你的整个程序是什么样子,也不知道你试图执行什么命令。也许你的文件路径错了。也许它需要不可用的权限。这就是错误所在检查和调试用于确定为什么。Tesk Manager在没有工作目录且可能没有环境变量的情况下运行程序。它甚至可以作为具有不同权限的不同用户(例如本地帐户)运行程序。我们需要查看任务计划程序的设置以及程序中哪一行生成了错误代码。@JerryJeremiah,太好了。工作目录确实是正确的。我必须手动添加工作目录以消除其他错误。我将尝试更好的错误处理。我很快就会回来