首頁 > 後端開發 > C++ > 如何在沒有 C 核心模式驅動程式的情況下偵測 Win32 進程的建立/終止?

如何在沒有 C 核心模式驅動程式的情況下偵測 Win32 進程的建立/終止?

Susan Sarandon
發布: 2024-11-21 02:47:10
原創
210 人瀏覽過

How Can I Detect Win32 Process Creation/Termination Without a Kernel-Mode Driver in C  ?

在C 語言中無需內核模式驅動程式即可檢測Win32 進程創建/終止

雖然NT 內核模式驅動程式為進程提供了全面的API建立和終止通知,僅使用Win32 API 函數就可以在C 中實現類似的功能。

使用 WMI

WMI(Windows Management Instrumentation)提供了豐富的集合事件通知,包括與進程建立和終止相關的事件通知。然而,WMI 可能不適合所有場景,尤其是當您只需要追蹤進程終止時。

使用回呼

更有效的方法是使用等待特定進程終止的回呼函數。這可以透過以下步驟實現:

  1. 呼叫 OpenProcess 來取得要監視的進程的句柄。
  2. 以進程句柄作為參數呼叫 RegisterWaitForSingleObject。指定 WaitOrTimerCallback 作為進程終止時要執行的回呼函數。
  3. 進程終止時將呼叫 WaitOrTimerCallback 函數。

範例程式碼

VOID CALLBACK WaitOrTimerCallback(
    _In_  PVOID lpParameter,
    _In_  BOOLEAN TimerOrWaitFired
)
{
    MessageBox(0, L"The process has exited.", L"INFO", MB_OK);
    return;
}

DWORD dwProcessID = 1234;
HANDLE hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID);

HANDLE hNewHandle;
RegisterWaitForSingleObject(&hNewHandle, hProcHandle , WaitOrTimerCallback, NULL, INFINITE, WT_EXECUTEONLYONCE);
登入後複製

一旦 ID 為 dwProcessID 的程序終止,此程式碼將顯示一個訊息框。

以上是如何在沒有 C 核心模式驅動程式的情況下偵測 Win32 進程的建立/終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板