VC++实现注册表监控



//监视HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run项

#include <windows.h>

//定义一个监视注册表启动项的函数
int reg()
{
   HANDLE hNotify;
   HKEY hKeyx;
   //DWORD dwRes;

   hNotify = CreateEvent(NULL, //不使用SECURITY_ATTRIBUTES结构
         FALSE, //不自动重置
         TRUE,   //设置初始状态
         "RegistryNotify" //事件对象的名称
         );

   if (hNotify == 0)
   {
     MessageBox(NULL,"CreateEvent failed"," ",MB_OK);
     ExitProcess(0);
   }

   if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键
         "Software\\Microsoft\\Windows\\CurrentVersion\\Run", //子键
         0, //reserved
         KEY_NOTIFY, //监视用
         &hKeyx //保存句柄
         ) != ERROR_SUCCESS)
   {
     CloseHandle(hNotify);
     MessageBox(NULL,"RegOpenKeyEx failed"," ",MB_OK);
     ExitProcess(0);
   }

   if (RegNotifyChangeKeyValue(hKeyx, //监视子键句柄
         TRUE, //监视此项的子键
         REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_LAST_SET, //监视增加或删除了子键,监视键值发生是否改变
         hNotify, //接受注册表变化事件的事件对象句柄
         TRUE //注册表变化前报告
         ) != ERROR_SUCCESS)
   {
     CloseHandle(hNotify);
     RegCloseKey(hKeyx);
     MessageBox(NULL,"RegNotifyChangeKeyValue failed"," ", MB_OK);
     ExitProcess(0);
   }

   if (WaitForSingleObject(hNotify, INFINITE) != WAIT_FAILED)
   {
     MessageBox(NULL,"注册表有改动"," ",MB_OK);
   }

   CloseHandle(hNotify);
   RegCloseKey(hKeyx);

   return 0;

}

void main()
{
 // DWORD ID;

 // CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)reg, NULL, 0, &ID);   //创建线程

 // printf("ok\n");

	reg();

}


转载于:https://www.cnblogs.com/new0801/archive/2012/10/24/6177697.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值