[英]No new process, after succeede launch of CreateProcess
我正在嘗試創建將監視另一個進程的執行的程序。 如果進程崩潰,我的程序將重新啟動它。 (有點過程監視器)。 我有稱為 ProcessController 的主要 class。 有應該啟動新進程的 ProcessController::Start() 方法。 有代碼:
ProcessController::Start()
{
if (!CreateProcess(
m_progPath.c_str(), //Program name
NULL, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&m_si, // Pointer to STARTUPINFO structure
&m_pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
return false;
}
... other code
}
我從來沒有看到錯誤代碼,所以 CreateProcess 執行得很好,但是,沒有新進程出現(在任務管理器中看不到新進程,也沒有出現 windows。我嘗試啟動的應用程序也寫入日志,但在我之后沒有新日志運行我的 ProcessController。)我嘗試啟動的進程的權限設置為啟用執行它。 如果我嘗試使用我的代碼創建記事本++ 進程,它工作正常。 notepad++ window 出現。 我總是使用我試圖從我的 controller 開始的程序的完整路徑。
難道我做錯了什么??
推斷是要加載的組件有問題。 如上所述,如果找不到所需的 DLL 或無法初始化,則終止該過程。 此外,如果線程是進程中唯一的活動線程,則終止進程。 加載組件失敗可能會導致進程中只有活動線程。 以下是參考文檔: https://learn.microsoft.com/en-us/windows/win32/procthread/terminating-a-thread您可以使用 cmd 或其他任何東西來運行您編譯的 exe。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.