gpt4 book ai didi

c++ - 如何在 C++ 中检测 win32 进程的创建/终止

转载 作者:IT老高 更新时间:2023-10-28 12:37:16 26 4
gpt4 key购买 nike

我知道要接收有关 Win32 进程创建或终止的通知,我们可能会使用 API PsSetCreateProcessNotifyRoutine() 实现 NT 内核模式驱动程序,该驱动程序提供注册系统范围回调函数的能力,该函数是每次新进程启动、退出或终止时由操作系统调用。

这是否可能在不创建 NT 内核模式驱动程序的情况下,仅使用使用 c++ 的 Win32 API 函数?当然不使用无限循环查询事件进程列表的基本解决方案。

是否有任何库或 win32 API 提供相同的功能(系统范围的回调、异步事件)?

最佳答案

WMI 很棒,它也适用于进程名称。虽然如果您需要跟踪进程终止,更轻量级和更简单的方法如下:

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);

一旦进程终止,此代码将调用 WaitOrTimerCallback

关于c++ - 如何在 C++ 中检测 win32 进程的创建/终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com