驱动层注册表操作
来源:互联网 发布:ajax json参数传递 编辑:程序博客网 时间:2024/04/29 13:25
在用户态下面,有大把的API可供我们操作注册表,例如RegOpenKey,RegCloseKey等,这些API都是由windows提供给用户态使用的API。
一 注册表中常见数据结构
typedef struct _KEY_BASIC_INFORMATION {
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
typedef struct _KEY_NODE_INFORMATION {
} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
typedef _KEY_FULL_INFORMATION {
其中,KEY_BASIC_INFORMATION表示一个键下面所有的子键的信息;
KEY_NODE_INFORMATION表示该键的所有信息;
KEY_FULL_INFORMATION表示该键的所有信息,包括自身和子键的信息;
二 API函数概述
1.ZwCreateKey:打开或者创建一个新的注册表键;
2.ZwOpenKey:打开一个已在的注册表键;
3.ZwFlushKey:
4.ZwQueryKey:查询某注册表项所属的类,以及子键的数量和长度;
5.ZwQueryValueKey:查询某注册表项的所有键值信息;
6.ZwEnumerateKey:查询某子项的所有信息;
7.ZwEnumerateValueKey:获取某注册表子键的所有信息;
8.ZwClose:关闭注册表句柄;
三 注册表操作。
1.路径的表示方式
2.注册表基本操作
(1)枚举注册表键下面的所有子项:利用ZwQueryKey和ZwEnumerateKey完成。
间。
(2)枚举子项下面的某对应名字的子键的内容值
如下例:
RtlInitUnicodeString( &RegUnicodeKeyName,L"DisplayName");
InitializeObjectAttributes(&objectAttributes,pStrKey, OBJ_CASE_INSENSITIVE,NULL,NULL );
ntStatus = ZwOpenKey( &hRegister,GENERIC_READ,&objectAttributes);
ntStatus = ZwQueryValueKey(hRegister,&RegUnicodeKeyName,KeyValueFullInformation,NULL,0,&ulSize);
pvfi =(PKEY_VALUE_FULL_INFORMATION)ExAllocatePool(PagedPool,ulSize);
ZwQueryValueKey(hRegister,&RegUnicodeKeyName,KeyValueFullInformation,pvfi,ulSize,&ulSize);
调用流程不在敖述,大致同上面类似,只是最后取子键值的时候,调用ZwQueryValueKey获取,对于KeyValueFullInformation值,该值记载了子键对应的名字和内容,内容在名字之后,偏移是根据DataOffset获取的。
(3)枚举子项下面的所有子键信息
InitializeObjectAttribut
ntStatus = ZwOpenKey( &hRegister,KEY_ALL_ACCESS, &objectAttributes);
ZwQueryKey(hRegister,KeyFullInformation,NULL,0,&ulSize);
pfi=(PKEY_FULL_INFORMATION)ExAllocatePool(PagedPool,ulSize);
ZwQueryKey(hRegister,KeyFullInformation,pfi,ulSize,&ulSize);
for ( i=0;i<pfi->Values;i++)
{
上面的流程首先打开某注册表子项,调用ZwQueryKey获取该子项对应的子键信息(数目和长度),然后调用ZwEnumeratueKey遍历该子项下面的所有子键信息。
- 驱动层注册表操作
- 驱动注册表操作
- 驱动编程学习----注册表操作
- 在驱动中操作注册表
- 驱动篇之注册表操作
- 【驱动开发】005 注册表操作
- 六、 在驱动中操作注册表
- 注册表操作-->mengwuji驱动教程笔记
- Windows驱动开发之注册表操作
- 总结一下应用层上对注册表的操作
- Windows驱动编程 文件读写 以及注册表操作
- 驱动文件和注册表操作初始化路径字符串问题
- Windows驱动开发(5) - 内核模式下的注册表操作
- Win64 驱动内核编程-6.内核里操作注册表
- 操作注册表
- 注册表操作
- 注册表操作
- 操作注册表
- PHP resource类型的实质是什么
- Implement Queue using Stacks 用俩栈实现队列
- android-监听wifi状态和信号强度变化
- python 序列化
- maven依赖servlet-api和jsp-api的问题
- 驱动层注册表操作
- 通过Python调用OpenStack 的RESTful API
- ViewPager+Fragment取消预加载(延迟加载)
- 【R语言】apply函数族
- 解决异常Circular dependencies cannot exist in RelativeLayout
- storm初识印象
- 分部署云存储系统Ceph架构剖析
- weka连接mysql数据库
- C# Socket多线程编程(一)