我监视一些Windows机器。我运行了我编写的Windows服务,当进程尝试创建新的注册表项时,我的目的是通知。
我将RegistryCallback
与以下签名
NTSTATUS RegistryCallback(
_In_ PVOID CallbackContext,
_In_opt_ PVOID Argument1,
_In_opt_ PVOID Argument2
)
RegistryCallback已在CmRegisterCallback中注册。问题是我收到每个注册表项创建的通知,我仍然只想通知创建新的注册表项,或者至少获取该密钥已经存在的信息,有没有办法这样做?
答案 0 :(得分:3)
您无法请求特定通知,您必须全部接收。但是,Argument1
会告诉您正在执行哪种操作,因此您只能处理您感兴趣的操作。Argument2
包含指向各种结构的指针,具体取决于Argument1
的值,它为您提供有关操作的更详细信息。例如,当Argument1
为RegNtPostCreateKeyEx
时,Argument2
指向REG_POST_OPERATION_INFORMATION
结构,其PreInformation
字段指向REG_CREATE_KEY_INFORMATION
结构Disposition
}}字段告诉您密钥是否已存在。