1. 簡介
我們平時大多採用Regedit登錄編輯程式來實現對註冊表的修改操作,但是這種手工操作費時費力,當你要對多台PC統一修改註冊表時,就要怨念了。並且在某些情況下,如果登錄編輯程式被禁用了,那麼這種方法也會失效。於是,推薦大家使用REG檔案來快速完成註冊表的修改。
REG檔案實際上是一種註冊表指令檔,Regedit登錄編輯程式可以使用REG檔案來匯入、匯出註冊表的子項和值。雙擊REG檔案(即用Regedit.exe 登錄編輯程式程式運行該檔案)即可將其中的資料匯入到註冊表中。我們可以使用REG檔案直接對註冊表進行任何修改操作,且不受登錄編輯程式被禁用的限制。與匯入相對的,可以使用Regedit登錄編輯程式來將註冊表中指定的項匯出至REG檔案,便於備份。可將REG檔案可分發至多台PC,進行批量的註冊表修改。
REG檔案可用任何文字檔編輯工具(如記事本)進行修改,熟練掌握後可以起到事半功倍、意想不到的效果。
2. 建立REG檔案
REG檔案的建立過程非常簡單,可以通過任何一個文字檔編輯工具來實現。建立前記得先去掉“檔案夾選項”中的“隱藏已知檔案類型的副檔名”子項,使得你能夠真正地修改檔案的副檔名。
我們以記事本為例,開啟記事本程式,選擇“另存新檔”,檔案名稱為“try.reg”,檔案類型為“所有檔案”(這一步很重要,否則儲存後的檔案會自動加上“.txt”副檔名),然後儲存。於是就獲得了一個空的REG檔案。當然,你也可以選擇直接修改記事本檔案的副檔名,例如把檔案“try.txt”改為“try.reg”。
雙擊執行該檔案,就會彈出以下提示框,提示你是否要修改註冊表。
3. REG文法
3.1 基本文法
Reg檔案內容的基本文法格式如下:
RegistryEditorVersion 空行 [RegistryPath1] "DataItemName1"="DataType1:DataValue1" "DataItemName2"="DataType2:DataValue2" 空行 [RegistryPath2] "DataItemName3"="DataType3:DataValue3" 空行 [RegistryPath3] "DataItemName4"="DataType4:DataValue4" |
- RegistryEditorVersion為Windows登錄編輯程式的版本號碼。在Windows 2000、Windows XP、Windows Server 2003、Windows Vista、Windows 7中,其值為“Windows Registry Editor Version 5.00”。我的系統為Windows 7 Service Pack 1(64位),其值為“Windows Registry Editor Version 5.00”。在Windows 98和Windows NT 4.0中,其值為“REGEDIT4”。Windows 2000、Windows XP和Windows Server 2003可能還相容“REGEDIT4”。
- 空行用於分隔多個鍵路徑,每個鍵路徑下可以有多個子鍵和值項。
- RegistryPath就是鍵路徑,包含在方括弧中,並以反斜線分隔每個階層,例如:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6] |
REG支援遞迴建立新的鍵(子鍵),只要在RegistryPath中加入想建立的鍵(子鍵)即可。例如使用如下語句在TCPIP6下建立子鍵try,並在try下建立子鍵abc。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\try\abc] |
註冊表由鍵(或稱“項”)、子鍵(或稱“子項”)和值項構成。我們來看一下登錄編輯程式,瀏覽至上述鍵路徑所指示的位置:
- 左側展開的階層就是鍵路徑,可以理解為目錄,一個鍵就是分支中的一個目錄,而子鍵就是這個目錄中的子目錄。子鍵同樣是一個鍵,因為子目錄下還可以有子目錄。中的“TCPIP6”和“Linkage”就是鍵(子鍵)。
- 右側的“名稱-類型-資料”就是值項,可以理解為檔案,一個鍵(子鍵)可以有一個或多個值項,其名稱各不相同,如果一個值項的名稱為空白,則該值項為該鍵的預設值項。中的“DependOnService”就是值項的名稱,“REG_MULTI_SZ”是實值型別,其值為“Tcpip”。
- DataItemName是值項的名稱。如果該值項在註冊表中不存在,則建立;如果存在,則覆蓋其值。注意,值項的名稱要用雙引號引起來。
- DataType、DataValue是值項的值,其中DataType為實值型別,DataValue為具體值,DataType和DataItemName之間用“=”串連。REG_SZ類型的值需要標明DataType實值型別,只需要用雙引號引起來,例如"DataItemName1"="Microsoft IPv6 Protocol Driver";其他類型不需要用雙引號引起來,但需要添加實值型別,實值型別和具體值之間用冒號分隔,例如"DataItemName2"=hex(2):73,00,79,00,73,00,74,00,"DataItemName3"=hex(7):5c,00,44,00,65,00,76,00,"DataItemName4"=dword:00000006。
註冊表的資料類型主要有以下五種:
顯示類型 (在編輯器中) |
資料類型 |
說明 |
REG_BINARY |
位元 |
二進位值,以十六進位顯示 |
REG_DWORD |
雙字 |
一個32位的二進位值,顯示為8位的十六進位值,也可顯示為10位十進位值 |
REG_SZ |
字串 |
文本字串 |
REG_EXPAND_SZ |
可擴充字串 |
|
REG_MULTI_SZ |
多字串 |
含有多個文本值的字串 |
此外,註冊表還有其他的資料類型,但是均不常用:
REG_DWORD_BIG_ENDIAN REG_DWORD_LITTLE_ENDIAN REG_FULL_RESOURCE_DESCRIPTOR REG_QWORD REG_FILE_NAME |
3.2 刪除操作文法
如果要刪除一個鍵(子鍵),只需要在RegistryPath頭部添加字元“-”即可。例如使用如下語句刪除上文中建立的子鍵try和abc,REG是支援遞迴刪除的。
Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\try] |
如果要刪除一個值項,只需要在DataItemName後面的等號後添加字元“-” 即可。例如先使用下面第一段語句建立一個值項“valueItem”,然後用第二段語句刪除該值項。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\try\abc] "valueItem"="my value" |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\try\abc] "valueItem"=- |
3.3 重新命名操作文法
若要重新命名鍵(子鍵)或值項,請先將其刪除,然後使用新的名稱建立一個新的鍵(子鍵)或值項。
4. 編輯REG檔案
文章一開始已經建立了一個空的REG檔案,為了使其發揮作用,還需要編輯其內容。我們右鍵該檔案,選擇“編輯”或選擇“開啟檔案->記事本”,即可開啟REG檔案。接著輸入內容並儲存就OK了。
現在以一個例子說明REG檔案的使用方法。便如如下內容,儲存後運行該REG檔案,即可獲得所示的結果。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\try\abc] "valueItem1"="my value" "valueItem2"=dword:00000014 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\try] "valueItem3"=hex(7):5c,00,44,00,65,00,76,00 |
5. 補充知識
註冊表有五個分支,下面是這五個分支的名稱及作用:
名稱 |
作用 |
HKEY_CLASSES_ROOT |
儲存Windows可識別的文件類型的詳細列表,以及相關聯的程式 |
HKEY_CURRENT_USER |
儲存目前使用者設定的資訊 |
HKEY_LOCAL_MACHINE |
包括安裝在電腦上的硬體和軟體的資訊 |
HKEY_USERS |
包含使用電腦的使用者的資訊 |
HKEY_CURRENT_CONFIG |
這個分支包含電腦當前的硬體設定資訊 |