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()
ドキュメントを批判するのではなく、明確にしたいだけです。
これは、 の 2 番目のパラメーターが is でCreateProcess()
あるかどうかに関係なく発生しますNULL
。多分それはcmd.exe
許可と関係がありますか?だったらCreateProcess()
失敗するんじゃないの?ありがとうございました。