使用C++监视注册表
Monitor registry using C++
无论何时安装或删除应用程序,我都希望监视注册表项的更改/添加/删除情况。我已经测试了msdn(链接)中的示例代码,它运行良好。
但问题是,它并没有告诉我哪个密钥实际上被修改/添加/删除了。如何使用c++检索这些信息?
只有三种方法,没有一种既简单又充分:
-
RegNotifyChangeKeyValue
:不会给你所需的信息,但很容易使用。 -
EVENT_TRACE_FLAG_REGISTRY
是Windows事件跟踪的一部分这就是ProcMon所使用的。它运行良好,但使用起来相当困难
我不知道自己到底该怎么用,但如果我弄清楚了,我会把它贴在这里。 -
CmRegisterCallback
:需要内核模式驱动程序,这在64位中是一个难题
但除此之外,这是最完美的解决方案。
遗憾的是,Windows事件跟踪(EWT)不允许查看事件中的完整密钥路径。您只得到一个部分密钥名称,而一个奇怪的句柄实际上是一个密钥控制块。从这个区块获取信息并不是那么简单。是的,进程监视器使用EWT,但它不使用Windows内核跟踪作为提供程序。
相关文章:
- 有没有任务栏API可以立即应用注册表更改
- 检查注册表项是否链接到(或副本)另一个注册表项
- 禁用地址共享注册表不起作用
- 如何从注册表项中提取配置单元和注册表名称
- 注册表正在设置 1 个字符
- 清理"QSettings"注册表项的最佳方法(Windows上的Qt 5)
- 在 c++ 中编辑注册表项
- 某些进程的注册表限制
- 在编译时生成某种子类/类型注册表?
- 如何测试注册表项是否存在?
- 注册表-获取值(而不是键)上次更改的时间和键创建日期
- 从注册表中检索已注销用户的 sid
- 如何正确检查 c++ 是否存在注册表项?
- 如何在不使用任何数据库的情况下制作动态注册表单?
- 强制资源管理器重新加载注册表值
- 以编程方式锁定注册表项以避免并发问题
- 如何应用注册表模式使"select class depend on input"遵守开放封闭原则?
- 如何恢复注册表项的有效权限?C++
- WMI:监视注册表更改
- 使用C++监视注册表