[英]System() to start a process, but using CreateProcess fails?
因此,一個奇怪的問題,我正在嘗試創建一個過程,然后繼續進行它,主要是探索Windows API。 我注意到,如果我這樣做:
system("C:\\Windows\\System32\\calc.exe");
它將打開一個計算器exe,但是,如果我嘗試使用CreateProcessA
進行相同的操作,則會得到以下信息:
STARTUPINFO starting_info;
PROCESS_INFORMATION process_info;
// let's try and make a process
if (!CreateProcessA(NULL, "C:\\Windows\\System32\\calc.exe", NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &starting_info, &process_info)) {
return;
}
// resume thread
NtResumeThread(process_info.hThread, NULL);
由於某種原因,這在“創建”進程時通常會拋出0xc0000142
錯誤,否則它將失敗。
這是怎么回事?
請參閱以下用於創建過程的MSDN示例代碼: https : //msdn.microsoft.com/zh-cn/library/windows/desktop/ms682512(v=vs.85).aspx
您需要將si
和pi
結構歸零,同時進行設置
si.cb = sizeof(si);
最后,關閉進程和線程句柄。
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.