经常看到有朋友在问如何修改Windows的注册表,今天就大概讲一下。

在线查看和修改注册表

大部分情况下,对于正常Windows操作系统,对,我说的是正常的Windows操作系统,不是WindowsPE,修改注册表很简单也很方便,直接按 Win + R 组合键打开运行窗口,输入 regedit 回车,就可以直接打开注册表编辑器。

就是这个样子。

 

举一个简单的场景示例:我现在要查看当前用户的开机启动项。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

上面就是具体的注册表地址,在注册表编辑器左侧的树形结构里慢慢定位到指定的位置,当然如果你的操作系统是WIndows 10的话,可以直接在注册表编辑器上面的地址栏粘贴完整的地址,然后回车,就展开到指定位置了。

右侧就是开机启动项了,你可以直接右键删除名称,就可以删除这条启动项记录,当然,这里并不是说电脑上所有的开机启动项都在这里了,还有其他位置也能放开机启动项,比如:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

这里就是对所有用户生效的开机启动项了。

还有很多程序是以服务运行的,或者是直接放在了开始菜单的“启动”文件夹里,这里就不细说了。

 

注册表RootKey的简写

经常看到有人给出的注册表地址是HKCU\...开头,这里你可能会疑惑,HKCU我怎么在注册表里找不到,其实这只是HKEY_CURRENT_USER的简写,下面是注册表各RootKey对于的简写:

HKEY_CLASSES_ROOT HKCR
HKEY_CURRENT_USER HKCU
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_CURRENT_CONFIG HKCC

HKEY_CLASSES_ROOT或HKCR是HKEY_LOCAL_MACHINE\Software\Classes的别名(即引用)。主要添加了一个单独的根密钥,因此软件开发人员可以直接访问此数据,而无需使用HKLM。HKCR包含与应用程序、快捷方式和文件扩展名关联相关的数据。

HKEY_CURRENT_USER或HKCU是从%UserProfile%\ntuser.dat构建的。HKCU包含特定于每个用户的数据,并在PC上具有登录帐户。一般存放诸如应用程序事件、键盘布局、映射的网络驱动器、应用程序首选项和其他特定于用户的设置之类的数据。

HKEY_LOCAL_MACHINE或HKLM硬件和软件配置数据是“全局”的或与PC相关的,无论登录哪个用户。HKEY_LOCAL_MACHINE\SYSTEM包含与Windows启动相关的子项和设置。

HKEY_USERS或HKU是组策略设置的宿主。任何基于组策略的规则都存储在此根密钥下。登录时,这些设置将复制到HKCU。

展开HKU时,你会看到一个.DEFAULT文件夹以及每个用户/登录ID的条目。.DEFAULT文件夹包含新用户首次登录时的基本设置,S-1-5-21-文件夹包含用户ID的设置。

你可以使用HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\交叉引用这些ID,在其中您可以找到相同的SID列表。单击S-1-5-21-文件夹之一,然后查看ProfileImagePath键的数据值以查看配置文件的所有者。

HKEY_CURRENT_CONFIG或HKCC包含当前的硬件配置文件设置。像HKCR一样,HKCC是HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001的别名(注意:如果您的PC有多个硬件配置文件,则它们的编号为ControlSet002,ControlSet003等)。

 

离线修改注册表

对于有些特殊的键值,在线状态下我们无法修改(一般是提示权限不足),这时候就需要离线修改了。

当然,怎么离线呢,最方便的就是使用WindowsPE啦。启动WindowsPE,然后离线加载操作系统的注册表,就能随意修改啦。

我们再了解一下相关基础知识:

注册表的实际文件和RootKey对应关系

操作系统 RootKey 实际文件
Windows XP/2003 HKEY_CURRENT_USER Windows\system32\config\default
  HKEY_LOCAL_MACHINE\SOFTWARE Windows\system32\config\software
  HKEY_LOCAL_MACHINE\SYSTEM Windows\system32\setupreg.hiv
Windows 7/8/8.1/10 HKEY_CURRENT_USER Windows\system32\config\default
  HKEY_LOCAL_MACHINE\SOFTWARE Windows\system32\config\software
  HKEY_LOCAL_MACHINE\SYSTEM Windows\system32\config\system

我只列出了最常用的注册表文件对应关系。

离线加载注册表配置单元

下面开始离线加载注册表单元,举例一个场景,我现在需要修改WindowsPE下某个键值。

打开注册表编辑器,先定位RootKey为HKEY_LOCAL_MACHINE

然后点击“文件”——“加载配置单元”

会自动打开一个文件选择框,按上面的表格去找你的注册表文件,比如Windows\system32\config\software

它会提示需要输入一个项目名称,这个名称你可以随便输入,比如“123”,点击“确定”

这个时候你展开HKEY_LOCAL_MACHINE,发现什么了?多了一个123的子目录

展开HKEY_LOCAL_MACHINE\123,里面就是你要的注册表内容了,跟正常系统下的HKEY_LOCAL_MACHINE\SOFTWARE结构一模一样

离线卸载注册表配置单元

刚刚你已经知道了加载注册表,那么你修改完内容后就准备卸载注册表配置单元了。

先定位到HKEY_LOCAL_MACHINE\123

然后依次“文件”——“卸载配置单元”

卸载完成后你会发现123已经消失了。

最后,我们需要清理一下临时文件。打开你刚刚修改的注册表文件目录,你会发现多了这么几个隐藏文件:

没错,这些系统隐藏文件就是你修改注册表时产生的临时文件,可以直接删除。

此处内容隐藏,登录后可见!立即登录  登录后请刷新页面!刷新

 

 

最后于 2021-01-02 10:52:30 被caocaofff编辑 ,原因:
收藏
分享
我的博客:cboot.org
最新回复 (3)
返回