CreateProcess завершается успешно, но GetLastError () возвращает отказ в доступе

У меня небольшая путаница из-за конфликтующих возвращаемых значений изCreateProcess() а такжеGetLastError(), Когда я используюCreateProcess() способом, аналогичным приведенному ниже, он добивается успеха и, кажется, выполняет свои необходимые задачи. Еще,GetLastError() по-прежнему возвращает доступ запрещен.

Если в доступе отказано, почему он завершает задачу? Напротив, еслиCreateProcess() успешно, почемуGetLastError() в доступе отказано?

Или я используюGetLastError() неправильно? Я должен использовать это только тогда, когдаCreateProcess() возвращает ошибочное значение? (Мое оправдание для поведения ниже было то, что я подумал, что лучше быть в безопасности, чем сожалеть)

    SetLastError(0);
    hello = CreateProcess(_T("C:\\Windows\\System32\\cmd.exe"), 
        _T("C:\\Windows\\System32\\cmd.exe /C ant debug"),
        NULL,NULL,false,0,NULL,
        _T("C:\\My\\Directory"),&siStartupInfo, &piProcessInfo);
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ALLOCATE_BUFFER 
        |FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(), 
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
        (LPTSTR)&errorText, 0, NULL); 
    AfxMessageBox(errorText);

Является ли этот тип поведения нормальным? вCreateProcess() документация, упоминается использованиеGetLastError() когдаCreateProcess() не удается, но это не упоминает обратное. Не критикуя документацию, просто хотелось бы получить некоторые разъяснения.

Это происходит ли второй параметр вCreateProcess() являетсяNULL или нет. Может быть, это связано сcmd.exe разрешения? Если это так, не следуетCreateProcess() потерпеть поражение? Спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос