簡體   English   中英

System()啟動進程,但是使用CreateProcess失敗?

[英]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

您需要將sipi結構歸零,同時進行設置

si.cb = sizeof(si);

最后,關閉進程和線程句柄。

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM