CreateProcess()
由于和的返回值冲突,我有点困惑GetLastError()
。当我CreateProcess()
以类似于下面的方式使用时,它成功并且似乎完成了它所需的任务。然而,GetLastError()
仍然返回 Access is Denied。
如果访问被拒绝,为什么它似乎完成了任务。相反,如果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()
失败时使用,但没有提到相反的情况。不批评文档,只是想澄清一下。
无论 in 的第二个参数是否存在,都会发生这种CreateProcess()
情况NULL
。也许它与cmd.exe
权限有关?如果是这样,不应该CreateProcess()
失败吗?谢谢你。