iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
Software Development

妄想對自己的Windows優化兼Debug的工程師很正常吧系列 第 2

登錄檔是什麼~資工的講古時間

今天是第二天~~~~
正如前面規劃的,今天要從我們的第一個主題Windows登錄檔開始介紹
這裡有個每次提到登錄檔大家就必說的大前提先報告大家知道!
登錄檔的編輯指令有風險,請小心謹慎,筆者無法附負擔!
後續來的文章會有一些實作的部分,請大家實作時小心,因應系統不同可能也會有些差異,最保險的方法是每次實作前都先備份一次登錄檔喔,那麼以下就開始介紹~~


什麼是登錄檔(Registry)?

Imgur
登錄檔在中國大陸叫作註冊表,是Windows作業系統、硬體裝置以及其他應用程式得以正常執行和儲存設定的核心”資料庫”,也可以說是一個非常巨大的樹狀分層結構的資料庫系統。
簡單來說,就是Windows這個作業系統的各種設定集合,包括每個應用程式的交互關聯性,硬體配置狀態和屬性,電腦效能紀錄跟底層核心的系統狀態,預設資料,軟體安裝資訊跟版本號、金鑰等等(這項根據安裝軟體的不同,儲存的資訊會不太一樣)。
舉個簡單的例子,你在桌面按右鍵,點選個人化(至少win 10是這樣),你改個桌布改個工作列的顏色,其實背後就是在修改某幾條登錄檔。


登錄檔的功能

我們剛剛知道他儲存了許多資訊,作業系統會以登錄檔作為他對這些設定資料的認知,通過登錄檔可以控制硬體、軟體、使用者環境和作業系統介面的資料資訊檔案,他同時也能控制電腦的應用程式和驅動程式,像是開機自啟的應用,或是應用程式預設會安裝到哪個位置等等。

相對的,如果哪天登錄檔損壞,系統會無法獲得必要的資訊去執行和控制程式,或是正確回應使用者的輸入,也就是系統會無法正常啟動和執行,像是找不到啟動某程式的需要的檔案,或是不能正確安裝程式等等。

所以當然,你修改它可能造成錯誤,但也可以控制系統深層的設定,根據個人習慣調配出最佳性能,這是可以炫技的部分(XDD


登錄檔的歷史由來

閒暇之餘,也可以來體會一下前人怎麼創造出這些技術的~
登錄檔的前身是.ini檔,在維基百科這樣寫著:

最初,Windows系統及應用程式的資訊被儲存在字尾名為ini的文字檔案中,這就是登錄檔身。但是這麼做有著致命弱點:因為每一個程式都會新安裝一個或多個ini檔案,來儲存程序資訊,導致資訊的分布極為零亂;而且在16位元系統下,ini檔案的大小必須在64KB之內。所以ini檔案被認為不便於使用和管理。

簡單來說,當時的系統設定資訊,是由負責管理計算機硬體的system.ini和負責管理桌面和應用程式win.ini組成。所有驅動、字型、設定和引數會儲存在.ini檔案中,任何新程式也會被記錄在此。

一開始可能應用程式有自己的ini檔,我們只要在system.ini和win.ini中指出那些檔案的路徑就可以使用,這造成system.ini和win.ini越來越肥大,而且沒有人移除程式會去刪掉這條資料,後來這個問題讓軟體廠商開始建立自己的ini檔,然後倒過來指向system.ini和win.ini。

這時候你發現問題了,ini檔四處散落,影響了系統正常的存取級別設定,而且ini檔案可讀性很強,任何文字編輯工具都能修改ini檔案,系統級的設定檔被刪刪改改的,一個差錯是可以讓系統崩潰,更別提病毒或木馬,這裡也存在安全性問題。

總而言之,這是他的缺點,也是技術轉折的關鍵,於是在Windows 3.0的OLE技術(物件連結與嵌入)出現後,微軟為了存放系統中大量的軟體元件資訊,組織了一個reg.dat的資料庫來存放這些資訊,使用二進位格式進行文件解析的效率更高,改變他的資料結構更有系統的規劃等等,並用regedit.exe去進行管理,在Windows 95中,登錄檔得到廣泛套用,逐漸淘汰ini檔案,中間出現regedt32.exe是過渡的控管程式。

最後,在現今的系統中,我們後來用System.dat和User.dat兩個二進位制檔案儲存登錄檔資訊,並用regedit.exe進行存取,不是隨便的程式都可以存取,增加了安全性和穩定性,就是這麼一回事。

說了這麼多覺得可以快樂結束這一天,但沒什麼畫面總覺得怪怪的,那我們就來看看登錄檔的的實體位置好了…….本來是這麼想,但其實現在的登錄檔文件不只有上面講的那麼簡單,這個我們留到下一篇告訴各位~

但是!
歷史的痕跡依舊還在,我們還是可以在C:\Windows(即%SystemRoot%)下發現system.ini和win.ini的存在,可以輕易用記事本打開,上面還寫著for 16-bit app support
Imgur

順帶一提,%SystemRoot% =當前啟動的系統的所在目錄,即C:\Windows,我們查看和編輯登錄檔的程式regedit.exe也在這裡,下篇會向大家介紹登錄檔的資料結構就可以從這裡看起,但千萬不要隨便增刪內容喔~~
Imgur

Imgur

參考資料:
https://tphcc.ebook.hyread.com.tw/bookDetail.jsp?id=11615 (電子書)
https://www.3du.tw/knowledge/OGI0Mg==.html
https://iter01.com/515763.html
https://zh.wikipedia.org/wiki/%E6%B3%A8%E5%86%8C%E8%A1%A8
https://en.wikipedia.org/wiki/Windows_Registry


上一篇
登錄檔、事件檢視器、Windows備份-談談Windows系統工具
下一篇
登錄檔結構和物理位置--一顆四處散落的tree
系列文
妄想對自己的Windows優化兼Debug的工程師很正常吧30

尚未有邦友留言

立即登入留言