原创
最近更新: 2022/11/29 20:26

Windows注册表入门

Windows开发手册 - 注册表

注册表是Windows用于存储软硬件配置信息的数据库,存储在C:\Windows\System32\config文件夹内。

注册表的结构类似于文件系统,其中,“文件夹”称为Key(项),“子文件夹”称为SubKey(子项),“文件”称为Value(值)。值由名称、类型和数据三个部分组成。

根目录

HKEY_LOCAL_MACHINE

用于存放系统和软件的配置信息,简称 HKLM。HKLM 保存着计算机的系统信息,包括网络和硬件上所有的软件设置。(比如文件的位置,注册和未注册的状态,版本号等等)这些设置和用户无关,是针对使用这个系统的所有用户的。

HKEY_CURRENT_CONFIG

存储硬件配置信息。HKEY_LOCAL_MACHINE 中同样的数据和任何注册表的变化都会同时的变化。HKEY_CURRENT_CONFIG 包括了系统中现有的所有配置文件的细节。

HKEY_CLASSES_ROOT

存储文件关联和COM对象注册信息,是应用程序运行时必需的信息,其实就是将HKEY_LOCAL_MACHINE\SOFTWARE\Classes放到了根目录的位置。

HKEY_USERS

包含了所有用户的信息。虽然它包含了所有独立用户的设置,但在用户未登录时用户的设置是不可用的。这些设置告诉系统哪些图标会被使用,什么组可用,哪个开始菜单可用,哪些颜色和字体可用,和控制面板上什么选项和设置可用。

HKEY_CURRENT_USER

管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码。在用户登录 Windows 时,其信息从 HKEY_USERS 中相应的项拷贝到 HKEY_CURRENT_USER 中。

HKEY_CURRENT_USER 与 HKEY_LOCAL_MACHINE 中有许多相似的项,但是前者是针对用户的,后者是针对系统的。

常用注册表项

系统配置相关项

系统基本配置

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001

系统配置信息原本。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

系统当前的配置信息,是 Windows 启动时复制的HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001的镜像。

HKLM\SYSTEM\CurrentControlSet\Services

系统中服务的配置信息。

HKLM\SYSTEM\CurrentControlSet\Control

包含用于控制系统启动和设备配置的某些方面的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses

包含有关系统上的设备接口的信息。每个设备接口类都有一个子项。

系统基本信息

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

系统用户信息

HKEY_LOCAL_MACHINE\SAM\SAM

应注意的是,该项有权限要求,需要先解除限制才可访问。

系统设置相关

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

包含开机启动、显示设置等内容。

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

开机启动位置,常成为木马病毒攻击的对象。

HKEY_CURRENT_USER\Control Panel

面板控制设置,包括键盘、鼠标、窗口颜色等。

软件配置相关项

系统级别的软件配置

HKEY_LOCAL_MACHINE\SOFTWARE

用户级别的软件配置

HKEY_USERS\{用户SID}\SOFTWARE HKEY_CURRENT_USER\SOFTWARE

实用技巧

右键菜单相关项

谁动了我的注册表?注册表比对分析工具 & 手动实现右键菜单自由 - 有限的未知

菜单项创建

  • 多级菜单的规律:shell项下一级是菜单名称,菜单名称项下一级是shell,如此层叠嵌套。

  • 最后一级是具体的程序或命令,项是command,默认值的数据是程序的路径和参数。

  • 一个菜单下的子菜单项的数量不能超过16个。

菜单属性设置

  • 全部值都是REG_SZ字符串类型。

  • SubCommands:声明:还有子项目(删除该值则不显示子菜单),数据可为空。

  • icon:图标地址(可以是ico图标路径,也可以是exe程序路径)

  • MUIVerb:为菜单项命名(该值不设置,则以项的名称命名)、添加热键(格式:菜单名称(&X),X为对应的键盘按键)。

  • Extended:声明:需要按下 shift + 右键 才显示该菜单项。仅作用于一级菜单,数据可为空。

菜单作用位置

项路径 菜单作用位置
HKEY_CLASSES_ROOT\DesktopBackground\shell 仅在桌面显示
HKEY_CLASSES_ROOT\Directory\shell explorer的左侧导航栏目录、右侧文件夹
HKEY_CLASSES_ROOT\Directory\Background\shell 桌面、explorer的右侧空白处、explorer的左侧导航栏目录,但右侧目录和文件中不显示
HKEY_CLASSES_ROOT\*\shell 任意文件右键菜单
HKEY_CLASSES_ROOT\SystemFileAssociations\.xxx\shell .xxx类型文件右键菜单,可以自行创建
HKEY_CLASSES_ROOT\SystemFileAssociations\text\shell 文本文件的右键菜单,下一级包括edit和open,分别对应编辑和打开的情况。以此类推有视频、图像的右键菜单等。

修改某种文件类型的默认图标

  1. HKEY_CLASSES_ROOT下找到对应文件类型的后缀名的项,如HKEY_CLASSES_ROOT\.zip
  2. 记录该项下的默认值,如不存在可以自行修改,如zipfile。这个值可以看做是这个文件类型的别名。
  3. 找到对应的项HKEY_CLASSES_ROOT\zipfile
  4. 创建项HKEY_CLASSES_ROOT\zipfile\DefaultIcon,修改默认值为对应ico文件的路径。
  5. 用任务管理器重启explorer.exe。

修改窗口背景色

养眼的淡绿色是202 234 206 (10进制)或 caeace (16进制)

HKEY_CURRENT_USER\Control Panel\Colors\

该项包含了各种颜色设置,包括字体、窗口、菜单等的颜色,窗口背景色的值是 Window。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors\Standard

该项包含了当前主题下的各种颜色设置,窗口背景色的值是 Window。

评论区