由于返回值冲突,我有点困惑CreateProcess()
and 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()
when CreateProcess()
失败了,但它没有提到相反的情况。不是批评文档,只是想进行一些澄清。
无论第二个参数在CreateProcess()
is NULL
或不。也许这与cmd.exe
权限?如果是这样的话,不应该CreateProcess()
失败?谢谢。