C++ Win32 API编程 之 注册表 上

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的备份文件为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 ”,确定,即可打开注册表。
C++ Win32 API编程 之 注册表 上-侠者安全社区

0x2 注册表键值

  • 常用的注册表的键值类型:其他不常用格式具体见MSDN:
  • 几个根键的用途说明:

0x3 注册表位数

  • 64bit系统的注册表分 32 位注册表项 和 64位注册表项 两部分
  • 应用程序操作注册表的时候也分32bit方式和64bit方式
  • 比如,同在64bit系统下,使用如下代码访问注册表:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC "), 0, KEY_ALL_ACCESS, &hKey)

© 版权声明
THE END
喜欢就支持一下吧
点赞19 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容