iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
Software Development

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

登錄檔的資料格式與.reg檔的介紹--各種REG的亂鬥

本篇我們要來介紹,登錄值的格式、.reg檔的意義,不過最後登錄檔的備份因為篇幅太長我就留到下篇來講,各位的熱忱在聽了一堆解說後可能稍稍消磨些,本篇的目的是希望可以講完我們改登錄檔前所需具備的知識,下篇做好前置作業,趕快進入自己動手的好玩實驗~


登錄值的格式

看到很多文章介紹登錄檔都會先提這個,但筆者希望可以先了解意義後再來細讀這部分會比較有帶入感,所以我也是到這篇才來研究格式的,以下分享幾個主要常用的格式給各位理解,他們都以"REG_"為開頭,如果遇到稀有格式再來補充:

字串

  • REG_SZ(字串值):一段固定長度的文字字串,通常以UTF-16LE存儲用NUL字符結尾,總是在引號內顯示,一般用來表示檔案的描述,硬體標識等
  • REG_MULTI_SZ(多字串值):含有多個值的一個字串,可以當作一個非空字串值的列表,以UTF-16LE存儲,允許SPACE和ENTER標識,字串間用NUL分隔、整個列表用結尾兩個NUL,常用多種網路協議、裝置列表等等
  • REG_EXPAND_SZ(可擴充字串值):一個可變長度的字串值,可以包含環境變數像是前面提到的%SystemRoot%,通常以UTF-16LE存儲用NUL字符結尾,用來支援顯示複雜資料,包括在程序或服務使用資料時解析的變數

二進位

  • REG_BINARY(二進位值):不定長度的二進位值,以十六進位制顯示在登錄檔編輯器中(用二進位顯示的話會看到天荒地老,所以編輯器通常用16進位顯示給使用者閱讀和更改),用來儲存大多數硬體設備的資訊。
  • REG_DWORD(雙字值):Double Word的概念,我們知道一個Word是16bit,所以這個格式就是指一個32位元的unsigned整數,也就是4個bytes長,通常用16進位值顯示(也就是說有8碼),可以用16進位或10進位編輯,又稱REG_DWORD_LITTLE_ENDIAN,在出錯控制功能上用處極大
  • REG_QWORD(四倍字值):Quad Word的概念,64位元的整數,以二進位顯示,最早在Windows 2000中引入。

登錄檔的腳本(.reg檔)

修改登錄檔的方法很多,除了regedit.exe以外,也可以使用第三方軟體,或是Windows SDK也提供Registry API去修改,cmd的REG指令也可以做到。
Imgur
cmd的REG指令:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/reg

那下面要介紹的是使用一個基本款的方式,用.reg檔案來修改登錄檔:

所謂的.reg檔,就是登錄檔匯出的腳本文件,他也可以用來匯入登錄檔到系統中。你可以用文字編輯器打開他,會發現他具有一定的格式語法。前面提到登錄檔是一個資料庫嘛,所以如果學過資料庫,你可以想像他就是你今天匯出資料庫的SQL語法檔案,把他執行可以用來編輯資料庫的內容,甚至匯出指令就可以代表整個資料庫的拷貝,這些指令也是人類易讀的可以被文字編輯打開編輯,他類似以下這樣子:
Imgur

實際上今天你雙擊一個.reg檔會被regedit.exe用匯入的功能直接執行,這個動作被翻譯為「匯入登錄項目檔案」,但他不受Regedt32.exe的支援。這個功能對一個非專業的使用者也可以容易操作,我們可以用他當作備份和還原的檔案,甚至我們可以用這個檔案遠端發送給多臺Windows電腦變成一種統一部屬設定的方式,或是當有人登錄檔損壞也可以用這個檔案做為修補包發送給用戶執行,之後我可能會寫一篇簡單的.reg檔教學當作體驗,如果有這個心力的話哈哈。

好的,以上就是今天的介紹,包含登錄值格式和說到登錄檔就要知道的.reg文件,我們開始漸漸有頭緒知道登錄檔這項技術了,下篇要來知道他的風險和備份方式,當作我們實際操作的前置作業。

Imgur

參考資料:
https://tphcc.ebook.hyread.com.tw/bookDetail.jsp?id=11615 (電子書)
https://iter01.com/515763.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/troubleshoot/windows-server/performance/windows-registry-advanced-users
https://www.asus.com/tw/support/FAQ/1018810/
https://ppfocus.com/0/trecfce83.html


上一篇
登錄檔的五大根鍵--設計結構的sense
下一篇
登錄檔備份—為了避免後面把他玩壞的補救措施
系列文
妄想對自己的Windows優化兼Debug的工程師很正常吧30

尚未有邦友留言

立即登入留言