我有一点点混乱,由于从冲突返回值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()
失败? 谢谢。