设为首页 加入收藏

TOP

VC实现注册表监控
2017-06-20 10:22:49 】 浏览:156
Tags:实现 注册表 监控
VC 实现注册表监控。监视HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run项
#include 
    
      
 
//定义一个监视注册表启动项的函数
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();
}
    

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC中结构体所占空间大小 下一篇图解VC++版PE文件解析器源码分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目