【问题标题】:Can I use RegistryCallback in user mode application我可以在用户模式应用程序中使用 RegistryCallback
【发布时间】:2015-07-31 23:43:13
【问题描述】:

我需要监控 Windows 机器上的注册表更改。是否可以从用户模式 ​​Windows 服务而不是 Windows 驱动程序使用 RegistryCallback?大多数示例都在驱动程序中使用。

【问题讨论】:

    标签: windows winapi registry


    【解决方案1】:

    AFAIK 没有,因为它是通过 CmRegisterCallback()CmRegisterCallbackEx() 注册的,它们只能在内核模式驱动程序中调用。

    用户模式进程可以使用RegNotifyChangeKeyValue(),但它不会报告有关对注册表所做的任何更改的详细信息。

    SysInternals Process Monitor 使用内核模式驱动程序来监控详细的注册表活动,以便在用户模式查看器中显示。

    【讨论】:

    • 但是我需要知道任何注册表更改的详细信息,在用户模式下还有其他方法吗?stackoverflow.com/questions/16820641/…
    • 不在用户模式下,不。您必须手动扫描注册表并跟踪您感兴趣的所有内容,然后在每次收到更改通知时再次重新扫描,并确定两次扫描之间的差异。至少在内核模式下,回调会告诉你发生了什么变化。因此,如果您想采用这种方法,则必须使用内核模式驱动程序,该驱动程序根据需要通过 IPC 机制将信息中继到用户模式应用程序。
    • forum.sysinternals.com/regmon-sourcecode_topic20980.html 提到“进程监视器的注册表过滤器使用 SSDT 挂钩”,SSDT 挂钩是否也需要在内核模式驱动程序中完成?
    • Hooking the System Service Dispatch Table (SSDT)。并且 Process Monitor 仅在 XP 上使用 SSDT 挂钩。
    • 所以 SSDT 也需要挂在驱动程序中,对吗?
    猜你喜欢
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多