Debugging Tools for Windows

!reg

!reg扩展命令用于显示和搜索注册表数据。

语法

!reg kcb Address 
!reg knode Address 
!reg kbody Address 
!reg kvalue Address 
!reg valuelist HiveAddress KeyNodeAddress 
!reg subkeylist HiveAddress KeyNodeAddress 
!reg cellindex HiveAddress Index 
!reg baseblock HiveAddress 
!reg seccache HiveAddress 
!reg hashindex HashKey
!reg openkeys {HiveAddress|0
!reg findkcb Path 
!reg hivelist 
!reg viewlist HiveAddress 
!reg freebins HiveAddress 
!reg freecells BinAddress 
!reg dirtyvector HiveAddress 
!reg freehints HiveAddress 
!reg dumppool [s|r

参数

kcb Address
显示某个registry key control block。Address指定key control block的地址。
knode Address
显示一个registry key node structure。 Address指定这个key node的地址。
kbody Address
显示一个registry key body (KBODY) 结构。Address指定这个key body的地址。(Registry key body是和句柄关联的实际对象。)
kvalue Address
显示某个registry key value结构。Address指定值的地址。
valuelist HiveAddress KeyNodeAddress
显示指定的key node中value的列表。HiveAddress指定hive的地址。KeyNodeAddress指定key node的地址。
subkeylist HiveAddress KeyNodeAddress
显示指定的key node的subkey列表。HiveAddress指定hive的地址。KeyNodeAddress指定key node的地址。
cellindex HiveAddress Index
显示hive中某个cell的虚拟地址。HiveAddress指定hive的地址。Index指定cell的序号。
baseblock HiveAddress
显示某个hive的base block (也称为hive header)。HiveAddress指定hive的地址。
seccache HiveAddress
显示某个hive的security cache。HiveAddress指定hive的地址。
hashindex HashKey
计算某个hash key的hash index entry。HashKey用于指定这个key。
openkeys { HiveAddress | 0 }
显示某个hive中所有打开的key。HiveAddress指定hive的地址。如果使用0,则显示整个registry hash table;该table包含注册表中所有已打开的key。
findkcb Path
显示某个注册表路径对应的registry key control block。Path指定完整的key路径,这个路径必须在hash table中存在。
hivelist
显示系统中所有hive的列表,以及每个hive相关的详细信息。
viewlist HiveAddress
显示某个hive的所有pinned and mapped view,以及每个view的详细信息。HiveAddress指定hive的地址。
freebins HiveAddress
显示某个hive的所有free bin,以及每个bin的详细信息。HiveAddress用于指定hive的地址。
freecells BinAddress
遍历一个bin并且显示它里面所有的cell。BinAddress指定bin的地址。
dirtyvector HiveAddress
显示某个hive的dirty vector。HiveAddress指定hive的地址。
freehints HiveAddress
显示空闲的hint。HiveAddress指定hive的地址。
dumppool [ s | r ]
显示注册表分配的分页池(registry-allocated paged pool)。如果指定了s,则注册表页面列表(registry page list)会保存到一个临时文件中。如果指定r,则从先前保存的临时文件恢复注册表页面列表。

DLL

Windows 2000 不可用
Windows XP和之后 Kdexts.dll

注释

使用!dreg扩展命令来显示格式化后的注册表键信息。

下面是一些示例:

kd> !reg hivelist

-------------------------------------------------------------------------------------------------------------
| HiveAddr |Stable Length|Stable Map|Volatile Length|Volatile Map|MappedViews|PinnedViews|U(Cnt)| BaseBlock | FileName 
-------------------------------------------------------------------------------------------------------------
| e16e7428 |       2000  | e16e7484 |          0    |  00000000  |        1  |        0  |     0| e101f000  | \Microsoft\Windows\UsrClass.dat
| e1705a78 |      77000  | e1705ad4 |       1000    |  e1705bb0  |       30  |        0  |     0| e101c000  | ttings\Administrator\ntuser.dat
| e13d4b88 |     814000  | e146a000 |       1000    |  e13d4cc0  |      255  |        0  |     0| e1460000  | emRoot\System32\Config\SOFTWARE
| e13ad008 |      23000  | e13ad064 |       1000    |  e13ad140  |        9  |        0  |     0| e145e000  | temRoot\System32\Config\DEFAULT
| e13b3b88 |       a000  | e13b3be4 |       1000    |  e13b3cc0  |        3  |        0  |     0| e145d000  | emRoot\System32\Config\SECURITY
| e142d008 |       5000  | e142d064 |          0    |  00000000  |        2  |        0  |     0| e145f000  | <UNKNOWN>
| e11e3628 |       4000  | e11e3684 |       3000    |  e11e3760  |        0  |        0  |     0| e11e4000  | <NONAME>
| e10168a8 |     1c1000  | e1016904 |      15000    |  e10169e0  |       66  |        0  |     0| e1017000  | SYSTEM
| e10072c8 |       1000  | e1007324 |          0    |  00000000  |        0  |        0  |     0| e1010000  | <NONAME>
-------------------------------------------------------------------------------------------------------------

kd> !reg hashindex e16e7428

CmpCacheTable = e100a000

Hash Index[e16e7428] : 5ac
Hash Entry[e16e7428] : e100b6b0

kd> !reg openkeys e16e7428

Index 68:  7bab7683 kcb=e13314f8 cell=00000740 f=00200004 \REGISTRY\USER\S-1-5-21-1715567821-413027322-527237240-500_Classes\CLSID
Index 7a1:  48a30288 kcb=e13a3738 cell=00000020 f=002c0004 \REGISTRY\USER\S-1-5-21-1715567821-413027322-527237240-500_Classes

附加信息

关于注册表和它的组件的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

Build machine: CAPEBUILD