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

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

Windows系统使用注冊表来存储系统和应用程序配置数据。非常多系统和应用程序重要的配置的信息都存储在注冊表中。

注冊表是一种以树型结构组织的数据库。树的每个节点称
作键(key),每一个节点能够包括若干子键,键能够存储数据,存储的数据称作键值。一个键不管其是否有子键,都能够有键值。一个键能够有非常多个键值,每一个键值都有一个名字。包括若干数据。所包括的数据类型能够有非常多种,表10.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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun,仅仅需设置REG二SZ类型的键值,将值设置为程序的路径就可以使用程序在系统启动时自启动。

假设仅仅须要在下次系统启动时自启动一次,那么能够设置键HKEY_LOCAL_MACHINE SOFTWAREMicrosoftWindowsCurrentVersionRunOnce的键值。


5 设置随程序启动而启动的调试器(不论什么程序)

本节将介绍怎样在程序启动时载入调试器(读者也能够用于设置自启动程序)。“HKEY_LOCAL_MACHINESOFTWAREYMicrosoft,Windows NTCurrentVersionImage File
Execution Options”下的子键能够用于指定启动调试器。

如须要调试os_info.exe,在“Image FileExecution Options”键下创建子键“os_info.exe”。然后创建键值,名为“Debugger”,类型为REG_SZ。数据为启动调试器的命令行。这里指向Windbg,如:“C:Program FilesDebugging Tools forWindowswindbg.exe”(能够是不论什么可执行文件,比方notepad.exe。在载入键名称程序模块时,会首先启动“Debugger”键值指定的应用程序,并以键名指向的可执行程序为參数)。执行os_info.exe就会启动Windbg执行调试。


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

能够通过注冊表指定实时调试器,比方指定为WinDBG或OllyDBG等调试器。

指定实时调试器的方法为指定注冊表键“HKEY LOCAL MACHINESOFTWAREMicrosoft Windows
NTCurrentVersionAeDebug”的“Debugger”键值。

原文地址:https://www.cnblogs.com/wzzkaifa/p/6950722.html