需求:
监控指定的注册表项包括其子项和键项的变化,当变化发生时根据策略进行处理(添加/删除/修改子项, 添加/删除/修改键值)
思路:
1)程序启动,存储需要监控的注册表项包括其子项和键项的值
2)监控注册表,当变化发生时再次去取注册表项包括其子项和键项的值,将前后两次进行比较,找出不同,根据用户的策略进行处理
知识点:
监控注册表
注册表结构存储
根据注册表路径获取主键值和子键值
写入带子项的注册表
删除带子项的注册表
添加删除键项
写入DWORD类型或者字符串类型的键项
实现步骤如下:
1.存储注册表数据,监控变化
2.发生变化时进行处理
具体实现如下:
1.存储注册表数据,监控变化
2.发生变化时进行处理
处理结构图如下:
CompareInfoStruct
handleRegKeyDel //处理注册表项被删除的情况
AddRegInfoStruct
handleRegMainKeyValue //处理主键键值变化的情况
RepairRegItem
DeleteRedundantItem //删除添加的键项
HandleLack_ChangeValue//处理修改键值和删除键值的情况
isValueStructSame
handleRedundantRegKey //处理添加子项的情况
DeleteRedundantRegKey//删除多余项
RegDelnodeRecurse //删除带子项的注册表项
实现代码如下:
CompareInfoStruct
handleRegKeyDel
AddRegInfoStruct
handleRegMainKeyValue
RepairRegItem
DeleteRedundantItem
HandleLack_ChangeValue
isValueStructSame
handleRedundantRegKey
DeleteRedundantRegKey
RegDelnodeRecurse