《解读window核心编程》 之 注册表

1 注册表的作用及组织形式

Windows系统使用注册表来存储系统和应用程序配置数据。很多系统和应用程序重要的配置的信息都存储在注册表中。注册表是一种以树型结构组织的数据库。树的每一个节点称
作键(key),每个节点可以包含若干子键,键可以存储数据,存储的数据称作键值。一个键无论其是否有子键,都可以有键值。一个键可以有很多个键值,每个键值都有一个名字,包含若干数据,所包含的数据类型可以有很多种,表10.1列出了注册表数据类型。

《解读window核心编程》 之 注册表_第1张图片

系统自带的注册表编辑器(regedit.exe)可以列举、查看、修改、增加、删除键和子键、键值。


2.键、子键、键属性及键值的相关操作

在对注册表键进行操作前,需要使用API函数RegOpenKey、RegOpenKeyEx打开键。在打开键后,如果需要创建新的键,使用API函数RegCreateKey、RegCreateKeyEx。这两组函数都将返回键的句柄(HKEY类型)。在得到键的句柄后,可以对键进行操作。创建子键使用前述RegCreateKey、Reg CreateKeyEx API函数;删除键使RegDeleteKey、RegDeleteKeyEx函数,RegQueryInfoKey API函数获取键多方面的信息,包括键值、子键等;获取和设置键值还可以使用RegGetValue、RegQueryValueEx、RegSetValueEx、RegQueryMultipleValues等函数;删除指定的键值使用RegDeleteValue函数;如果需要遍历子键和键值,可以使用API函数RegEnumKeyEx和RegEnumValue函数。


3 列举注册表项及键值

遍历子键和键值可以使用API函数RegEnumKeyEx和RegEnumValue函数。RegQueryInfoKey,RegEnumKeyEx和RegEnumValue相配合可以完成对一个键的所有子键及键值的列举。


4 通过注册表设置一个自启动的程序

程序的自启动有很多种方法,注册表是其中最常用的一种,有多个键具有这种功能。最常用的有:HKEY_LO CAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,只需设置REG二SZ类型的键值,将值设置为程序的路径即可使用程序在系统启动时自启动。如果只需要在下次系统启动时自启动一次,那么可以设置键HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce的键值。


5 设置随程序启动而启动的调试器(任何程序)

本节将介绍如何在程序启动时加载调试器(读者也可以用于设置自启动程序)。“HKEY_LOCAL_MACHINE\SOFTWAREYMicrosoft,\Windows NT\CurrentVersion\Image File
Execution Options”下的子键可以用于指定启动调试器。如需要调试os_info.exe,在“Image FileExecution Options”键下创建子键“os_info.exe”;然后创建键值,名为“Debugger”,类型为REG_SZ,数据为启动调试器的命令行,这里指向Windbg,如:“C:\Program Files\Debugging Tools forWindows\windbg.exe”(可以是任何可执行文件,比如notepad.exe,在加载键名称程序模块时,会首先启动“Debugger”键值指定的应用程序,并以键名指向的可执行程序为参数)。运行os_info.exe就会启动Windbg运行调试。


6.指定程序崩溃实时调试器

可以通过注册表指定实时调试器,比如指定为WinDBG或OllyDBG等调试器。指定实时调试器的方法为指定注册表键“HKEY LOCAL MACHINE\SOFTWARE\Microsoft\ Windows
NT\CurrentVersion\AeDebug”的“Debugger”键值。

你可能感兴趣的:(Windows,核心编程,解读windows核心编程,注册表,调试,windows,存储系统)