VC++实现注册表监控

[cpp] 
  1. //监视HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run项
  2. #include <windows.h>
  3. //定义一个监视注册表启动项的函数
  4. int reg()
  5. {
  6. HANDLE hNotify;
  7. HKEY hKeyx;
  8. //DWORD dwRes;
  9. hNotify = CreateEvent(NULL,  //不使用SECURITY_ATTRIBUTES结构
  10.                       FALSE, //不自动重置
  11.                       TRUE,  //设置初始状态
  12.                       "RegistryNotify" //事件对象的名称
  13.                       );
  14. if (hNotify == 0)
  15. {
  16. MessageBox(NULL,"CreateEvent failed"," ",MB_OK);
  17. ExitProcess(0);
  18. }
  19. if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键
  20.                 "Software\\Microsoft\\Windows\\CurrentVersion\\Run"//子键
  21.                  0, //reserved
  22.                  KEY_NOTIFY, //监视用
  23.                  &hKeyx //保存句柄
  24.                  ) != ERROR_SUCCESS)
  25. {
  26. CloseHandle(hNotify);
  27. MessageBox(NULL,"RegOpenKeyEx failed"," ",MB_OK);
  28. ExitProcess(0);
  29. }
  30. if (RegNotifyChangeKeyValue(hKeyx,   //监视子键句柄
  31.                             TRUE,    //监视此项的子键
  32.                             REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_LAST_SET, //监视增加或删除了子键,监视键值发生是否改变
  33.                             hNotify, //接受注册表变化事件的事件对象句柄
  34.                             TRUE     //注册表变化前报告
  35.                             ) != ERROR_SUCCESS)
  36. {
  37. CloseHandle(hNotify);
  38. RegCloseKey(hKeyx);
  39. MessageBox(NULL,"RegNotifyChangeKeyValue failed"," ", MB_OK);
  40. ExitProcess(0);
  41. }
  42. if (WaitForSingleObject(hNotify, INFINITE) != WAIT_FAILED)
  43. {
  44. MessageBox(NULL,"注册表有改动"," ",MB_OK);
  45. }
  46. CloseHandle(hNotify);
  47. RegCloseKey(hKeyx);
  48. return 0;
  49. }
  50. void main()
  51. {
  52. // DWORD ID;
  53. // CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)reg, NULL, 0, &ID); //创建线程
  54. // printf("ok\n");
  55.    reg();
  56. }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值