登录档的五大根键--设计结构的sense

在上一篇,我们介绍了登录档的结构和物理位置,现在你意识到他的存在,那今天就是接续前一篇最後的预告,我们要来研究几个重要登录档分支的意义,这样才会对他熟悉一些,大概可以猜测要找的登录值会在哪里,你才会有点略懂略懂的sense,那麽以下就开始罗!


登录档的分支

上篇提到,我们所看到的五个根键(偶尔也称子树),实际上是HKEY_LOCAL_MACHINE和HKEY_USERS所构成,接下的内容根据英文名称你仔细想一下可以猜出他安排的合理性,我们知道这些分支中一笔笔的登录值才是最後实际影响系统的资料,键的主要功能是协助分类,现在我们就Win+R,输入regedit,开启登录编辑程序来对看看!


1. HKEY_LOCAL_MACHINE (HKLM)

是登录档的核心主键,所有软件、硬体及Windows的工作设定都存放在这里,包括系统安全设定原则、使用者许可权和共用资讯、BIOS、硬体周边、作业系统资讯、软件设定资料及位置和版本号等等,这些设定通常跟使用者无关,是公共配置资讯,针对使用此系统的所有使用者。HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的资讯会在电脑启动时跟这里做比对检查。
Imgur
下面对一一解释这些子键:

  • HKLM\BCD00000000:BCD是Boot Configuration Data,启动配置数据,取代了以往的boot.ini,网路上有人示范把他给删了然後Windows就无法启动了。

  • HKLM\HARDWARE:在每次系统启动和执行硬件检测时创建,如之前提到,他的资讯会储存在RAM中,子键的层次结构储存电脑所有的硬体元件资讯,包括了系统使用的浮点处理器、串列埠等资讯。

    • ACPI:存放高阶电源管理介面资料
    • DEVICEMAP:用於存放装置设备的对映
    • DESCRIPTION:存放系统资讯
    • RESOURCEMAP:用於存放资源列表
    • UEFI:存放统一可延伸韧体介面的资讯
  • HKLM\SAM:安全帐户管理器(SAM)的资料库,包括帐户密码和使用者访问资料夹,档案以及外设的许可权等,通常显示为空。

  • HKLM\SECURITY:安全性设定资讯,储存安全策略和使用者组策略的配置资讯,通常显示为空。

  • HKLM\SOFTWARE:安装的软件资讯和设定,包括配置生效的设定、版本号等,各个软件的控制资讯分别安装在相应的子键中,主要由应用程序和系统安装程序修改,这里你会发现一个叫Wow6432Node,他牵涉到我们64和32位元的大乱斗中,笔者之後讲资料夹意义的时候再补充说明。

  • HKLM\SYSTEM:控制作业系统启动和修复的资讯,包含有关Windows系统的设置资料,底下有许多子键操控各种系统配置,其中CurrentControlSet是在系统启动时动态链接到本机的ControlSet001复制过来的。


2. HKEY_CLASSES_ROOT (HKCR)

这个根键记录的是Windows作业系统中所有资料档案的资讯内容,主要记录了不同档案的副档名和与之相对应的应用程序,也就是决定什麽类型的档案预设要用什麽程序开启这回事,内容包括启动应用程序所需的全部资讯,像是副档名,应用程序与文件之间的关系,驱动程序名,DDE和OLE资讯,类ID编号和应用程序跟文件的图示等等,所以当你展开後会看到很多子键,他主要分成已注册的各类档案副档名和各类档案型别的资讯。

然後这个键等於HKLM\Software\Classes,但在HKEY_CURRENT_USER\Software\Classes也有一样功能,你可以从名称轻易了解,他是当前使用者的设置跟本机设置的关系,两个设置可能有冲突的设定,这时候使用者自定义的设置的优先级当然比较高,所以我们说,HKCU\Software\Classes会优先於HKLM\Software\Classes,而通常的我们要改写设定也是改写HKCU下的。

我们举个例子,例如我们想找关於系统遇到.txt档案时的情况,就转到HKCR\txtfile目录,你会看到预设值告诉系统这是一份文字文件,其他属性笔者其实看不太懂,留下官方说明给大家参考:
https://docs.microsoft.com/zh-tw/windows/win32/shell/fa-progids
Imgur

然後像是HKRT\txtfile\shell\open\command的预设值你就可以看出,有个open txtflie的线索,然後资料栏指NOTEPAD.EXE(记事本)这支程序的绝对路径,实际上这串登录值的意义就是,在.txt档双击直接开启的程序使用的是记事本,後面的%1代表启用这项登录值的意思。
Imgur


3. HKEY_CURRENT_CONFIG (HKCC)

表示电脑目前的硬体配置资讯,实际上是个快捷指标,他等於 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current。


4. HKEY_USERS (HKU)

他储存所有使用者配置,包括预设使用者(DEFAULT)也就是新建立使用者的预设配置,和当前登入使用者的配置,配置的内容包括桌布,字体,控制台选项,音效,网路连线,开始功能表等,如果打开一看你可能会看到多个安全标识符(SID)表示不同用户,通常当前使用者会是S-1-5-18,其他用户代表各位可以转到官方的doc瞧瞧。
https://docs.microsoft.com/en-US/troubleshoot/windows-server/identity/security-identifiers-in-windows
Imgur


5. HKEY_CURRENT_USER (HKCU)

就是当前用户的设定资讯,他等於”HKU\当前用户的SID”,修改这里的登录值可以做一些个人化配置,但建议大家还是用Windows提供的各种设定介面去更改才是比较安全的做法。下面介绍一些子键的内容:

  • HKCU\AppEvents:应用事件的列表
  • HKCU\Console:控制台子系统储存设定
  • HKCU\Control Panel:包括内容与桌面、游标、键盘和滑鼠等设定有关
  • HKCU\Environment:环境变数设定
  • HKCU\Keyboaed Layout:键盘的布局,包含硬体和驱动器设定
  • HKCU\Printers:印表机上的相关资讯,包括使用者设定的配置选项
  • HKCU\SOFTWARE:储存当前使用者的应用程序设定和程序变数

以上是我们登录档的意义,也带了几个简单的例子,笔者希望可以先从理解意义,从几个关键字自己推出他的意思,这样的学习应该比较启发式,至於下一篇我们来谈谈登录值的格式还有.reg档的意义,以及登录档的备份,这些都谈完,我想差不多就可以来来尝试危险的事了呵呵(这里是指改机码的部分)

Imgur
可参考:https://www.quora.com/If-I-were-a-super-skilled-coder-how-long-would-it-take-me-to-write-the-Windows-10-operating-system

参考资料:
https://tphcc.ebook.hyread.com.tw/bookDetail.jsp?id=11615 (电子书)
https://iter01.com/515763.html
https://www.itread01.com/content/1546069686.html
https://en.wikipedia.org/wiki/Windows_Registry
https://zh.wikipedia.org/wiki/%E6%B3%A8%E5%86%8C%E8%A1%A8
https://docs.microsoft.com/en-us/windows/win32/sysinfo/predefined-keys
https://www.itread01.com/content/1546837203.html
https://www.itread01.com/content/1549298535.html


<<:  2021-Day8. 第一印象很重要!!从使用者加好友时,就建立良好关系:Line加好友欢迎讯息实作(一)

>>:  Day 11-制作购物车系统之安装及资料夹结构(一)

Laravel8_多重身份验证(第一部分)

第一部分(建立档案以及设定资料库) composer create-project laravel/...

EIP (OA) 与 BPM 的差异为何?

常有客户问到 EIP (OA)内建的 workflow 与所谓的BPM 有何不同?? 为何两者价格差...

[day-16] 认识Python的资料结构!(Part .3)

用List实现多层容器   何谓 多层容器 ?我们前面说过List可以存放 『任意型别』 ,其中也包...

Day27 深入解析Elasticsearch Query DSL Range query

Hello大家, 真的把今年的国定假日都过完了... 有点哀伤! 下次的连续假期是跨年了, 让我们一...

Android学习笔记01

MVVM 最近刚开始接触kotlin,而我想要用kotlin去建构一个MVVM的架构,首先要先了解甚...