0x0 注册表概述
- 在DOS年代,对计算机的内存管理及系统配置主要通过 autoexec.bat 和 config.sys 来完成。从 Windows3.X 开 始,对系统的管理增加了大量的 *.ini 文件来登录软件及硬件的各种初始化信息。这为系统管理带来了灵活性,也带来了不便之处。因为每个应用程序都有自己 的 ini 文件,并在 Win.ini 中增加了自己的配置项,这使 ini 文件众多,且 Win.ini 日益庞大。
- 从Windows95开始,原来保存在初始化文件中的有关信息,都被移到了系统的注册表中,注册表(Registry)实质上是一个庞大的分层数据库,它存储着下面这些内容:
- 软、硬件的有关配置和状态信息,应用程序和资源管理器外壳的初始条件、首选项和卸载数据;电脑整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件的描述、状态和属性;电脑性能记录和底层的系统状态信息,以及各类其他数据。
0x1 注册表结构
- 注册表是是Microsoft Windows中的一个重要而又复杂的信息数据库,它是多层次式的。在不同系统上注册表的基本结构相同。其中的复杂数据会在不同方式上结合,从而产生出一个绝对唯一的注册表。
- 从用户的角度看,注册表系统由两个部分组成:注册表数据库和注册表编辑器。注册表数据库包括两个文件:system.dat和user.dat。
system.dat 用来保存微机的系统信息,如安装的硬件和调和驱动程序的有关信息等。
user.dat 用来保存每个用户特有的信息,如桌面设置、墙纸或窗口的颜色设置等。
user.dat 用来保存每个用户特有的信息,如桌面设置、墙纸或窗口的颜色设置等。
- 由于注册表是最重要的系统文件之一,因此对于它的保护和备份就特别重要。系统在每次成功启动之后都将此次启动时的注册表作一个备份。system.dat的备份文件为system.dao,user.dat的备份文件为user.dao。如果由于某种原因注册表受到破坏,则可以用这两个备份文件来恢复注册表。Win 98/Win Me备份的注册表文件保存在C:/WINDOWS/SYSBCKUP文件夹(这是个隐藏文件夹)中,文件名称是rb000.cab、rb002.cab、rb003.cab、rb004.cab、rb005.cab(通常为五个)。
- Windows 为我们提供了一个注册表编辑器( regedit.exe )的工具,它可以用来查看和维护注册表。单击“开始”菜单,选择“运行”项,在“打开”栏中输入“ regedit ”,确定,即可打开注册表。
0x2 注册表键值
- 常用的注册表的键值类型:其他不常用格式具体见MSDN:
- 几个根键的用途说明:
0x3 注册表位数
- 64bit系统的注册表分 32 位注册表项 和 64位注册表项 两部分
在64bit系统下,通过regedit中查看到指定路径下的注册表项均为64位注册表项,而32位注册表项被重定位到:HKEY_LOCAL_MACHINE\Software\WOW6432Node
- 应用程序操作注册表的时候也分32bit方式和64bit方式
运行于64bit系统下的32bit应用程序默认操作32位注册表项(即被重定向到 WOW6432Node 下的子项);而64bit应用程序才是操作的直观子项。
- 比如,同在64bit系统下,使用如下代码访问注册表:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC "), 0, KEY_ALL_ACCESS, &hKey)
如果应用程序为32bit,那么实际访问的注册表位置为(默认操作):HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Sobey\MPC
而如果应用程序为64bit,那么实际访问的注册表位置将会是(默认操作):HKEY_LOCAL_MACHINE\SOFTWARE\Sobey\MPC
而如果应用程序为64bit,那么实际访问的注册表位置将会是(默认操作):
© 版权声明
THE END
暂无评论内容