如何用C++监控注册表某一键值的改动?

一条小鱼_ 2011-05-16 01:40:32
如何用C++监控注册表某一键值的改动?
...全文
186 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
酒红色的泪 2011-05-16
  • 打赏
  • 举报
回复
事件触发之后,如果还要继续捕获,需要重新调用RegNotifyChangeKeyValue
酒红色的泪 2011-05-16
  • 打赏
  • 举报
回复
HKEY	hKey;
DWORD dwFilter[2] = {REG_NOTIFY_CHANGE_LAST_SET, REG_NOTIFY_CHANGE_NAME};
HANDLE hEvent;

RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_ALL_ACCESS, &hKey);
hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
RegNotifyChangeKeyValue(hKey,
TRUE,
dwFilter[0],
hEvent,
TRUE);
WaitForSingleObject(...);
赵4老师 2011-05-16
  • 打赏
  • 举报
回复
gamemagic 2011-05-16
  • 打赏
  • 举报
回复
参考下RegMon
一条小鱼_ 2011-05-16
  • 打赏
  • 举报
回复
谢谢各位,好像跟RegistryNotifyCallback有关,但是我不知道这个函数是哪儿的,怎么用;
还有人说
1、先通过RegOpenKeyEx获得一个打开的键值HKEY ,
2、然后在调用CeFindFirstRegChange(HKEY ,TRUE,REG_NOTIFY_CHANGE_LAST_SET)产生一个HANDLE,
3、然后用WaitForSingleObject做等待处理,
4、等到事件触发之后做相应处理,之后记得调用CeFindCloseRegChange关闭监视。
但是我找不来 CeFindFirstRegChange函数在哪儿。
KevinHo 2011-05-16
  • 打赏
  • 举报
回复
创建一个辅助线程,定时监控你想监视的键值,每次都与上一次的键值对比,就可以。
ryfdizuo 2011-05-16
  • 打赏
  • 举报
回复
设个定时器。
c_losed 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ljt3969636 的回复:]

你可以每隔一段时间读一下该键值如果和上次不一样就说明改动了呗
[/Quote]
+1
ls的真猛 星星了
ljt3969636 2011-05-16
  • 打赏
  • 举报
回复
你可以每隔一段时间读一下该键值如果和上次不一样就说明改动了呗

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧