在上一篇,我們介紹了登錄檔的結構和物理位置,現在你意識到他的存在,那今天就是接續前一篇最後的預告,我們要來研究幾個重要登錄檔分支的意義,這樣才會對他熟悉一些,大概可以猜測要找的登錄值會在哪裡,你才會有點略懂略懂的sense,那麼以下就開始囉!
上篇提到,我們所看到的五個根鍵(偶爾也稱子樹),實際上是HKEY_LOCAL_MACHINE和HKEY_USERS所構成,接下的內容根據英文名稱你仔細想一下可以猜出他安排的合理性,我們知道這些分支中一筆筆的登錄值才是最後實際影響系統的資料,鍵的主要功能是協助分類,現在我們就Win+R,輸入regedit,開啟登錄編輯程式來對看看!
是登錄檔的核心主鍵,所有軟體、硬體及Windows的工作設定都存放在這裡,包括系統安全設定原則、使用者許可權和共用資訊、BIOS、硬體周邊、作業系統資訊、軟體設定資料及位置和版本號等等,這些設定通常跟使用者無關,是公共配置資訊,針對使用此系統的所有使用者。HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的資訊會在電腦啟動時跟這裡做比對檢查。
下面對一一解釋這些子鍵:
HKLM\BCD00000000:BCD是Boot Configuration Data,啟動配置數據,取代了以往的boot.ini,網路上有人示範把他給刪了然後Windows就無法啟動了。
HKLM\HARDWARE:在每次系統啟動和執行硬件檢測時創建,如之前提到,他的資訊會儲存在RAM中,子鍵的層次結構儲存電腦所有的硬體元件資訊,包括了系統使用的浮點處理器、串列埠等資訊。
HKLM\SAM:安全帳戶管理器(SAM)的資料庫,包括帳戶密碼和使用者訪問資料夾,檔案以及外設的許可權等,通常顯示為空。
HKLM\SECURITY:安全性設定資訊,儲存安全策略和使用者組策略的配置資訊,通常顯示為空。
HKLM\SOFTWARE:安裝的軟體資訊和設定,包括配置生效的設定、版本號等,各個軟體的控制資訊分別安裝在相應的子鍵中,主要由應用程序和系統安裝程序修改,這裡你會發現一個叫Wow6432Node,他牽涉到我們64和32位元的大亂鬥中,筆者之後講資料夾意義的時候再補充說明。
HKLM\SYSTEM:控制作業系統啟動和修復的資訊,包含有關Windows系統的設置資料,底下有許多子鍵操控各種系統配置,其中CurrentControlSet是在系統啟動時動態鏈接到本機的ControlSet001複製過來的。
這個根鍵記錄的是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
然後像是HKRT\txtfile\shell\open\command的預設值你就可以看出,有個open txtflie的線索,然後資料欄指NOTEPAD.EXE(記事本)這支程式的絕對路徑,實際上這串登錄值的意義就是,在.txt檔雙擊直接開啟的程式使用的是記事本,後面的%1代表啟用這項登錄值的意思。
表示電腦目前的硬體配置資訊,實際上是個快捷指標,他等於 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current。
他儲存所有使用者配置,包括預設使用者(DEFAULT)也就是新建立使用者的預設配置,和當前登入使用者的配置,配置的內容包括桌布,字體,控制台選項,音效,網路連線,開始功能表等,如果打開一看你可能會看到多個安全標識符(SID)表示不同用戶,通常當前使用者會是S-1-5-18,其他用戶代表各位可以轉到官方的doc瞧瞧。
https://docs.microsoft.com/en-US/troubleshoot/windows-server/identity/security-identifiers-in-windows
就是當前用戶的設定資訊,他等於”HKU\當前用戶的SID”,修改這裡的登錄值可以做一些個人化配置,但建議大家還是用Windows提供的各種設定介面去更改才是比較安全的做法。下面介紹一些子鍵的內容:
以上是我們登錄檔的意義,也帶了幾個簡單的例子,筆者希望可以先從理解意義,從幾個關鍵字自己推出他的意思,這樣的學習應該比較啟發式,至於下一篇我們來談談登錄值的格式還有.reg檔的意義,以及登錄檔的備份,這些都談完,我想差不多就可以來來嘗試危險的事了呵呵(這裡是指改機碼的部分)
可參考: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