CreateProcess tem êxito, mas GetLastError () retorna acesso negado
Estou tendo uma pequena confusão devido aos valores de retorno conflitantes deCreateProcess()
eGetLastError()
. Quando eu usoCreateProcess()
de uma maneira similar a abaixo, ele consegue e parece cumprir suas tarefas requeridas. Ainda,GetLastError()
ainda retorna o acesso negado.
Se o acesso for negado, por que ele parece concluir a tarefa? Em contraste, seCreateProcess()
consegue, porque éGetLastError()
retornando o acesso negado?
Ou é o meu uso deGetLastError()
incorreta? Eu só deveria usá-lo quandoCreateProcess()
retorna um valor com falha? (Minha justificativa para o comportamento abaixo foi que achei que era melhor prevenir do que remediar)
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);
Esse tipo de comportamento é normal? NoCreateProcess()
documentação, menciona usarGetLastError()
quandoCreateProcess()
falha, mas não menciona o inverso. Não criticar a documentação, gostaria apenas de alguns esclarecimentos.
Isso ocorre se o segundo parâmetro emCreateProcess()
éNULL
ou não. Talvez tenha a ver comcmd.exe
permissões? Se for esse o caso, não deveCreateProcess()
falhou? Obrigado.