原本是很早以前寫在blogspot的文章,今天重新整理了一下。註冊表的概述這裏就不多說了,本文主要介紹如何通過.reg文件操作註冊表,其他的操作方式也不是本文涉及的內容。本文主要內容包括:
1. .reg文件的語法
2. 添加註冊表項或添加和更改註冊表值
3. 刪除註冊表項和值
4. 重命名註冊表項和值
5. 需要注意的問題
.reg文件的語法
.reg文件實際上是一個文本文件,.reg 文件具有以下語法:
1: RegistryEditorVersion
2: Blank line
3: [RegistryPath1]
4: "DataItemName1"="DataType1:DataValue1"
5: DataItemName2"="DataType2:DataValue2"
6: Blank line
7: [RegistryPath2]
8: "DataItemName3"="DataType3:DataValue3"
其中:
RegistryEditorVersion 是“Windows Registry Editor Version 5.00”(對於 Windows 2000、Windows XP 和 Windows Server 2003)或“REGEDIT4”(對於 Windows 98 和 Windows NT 4.0)。“REGEDIT4”表頭也適用於基於 Windows 2000、Windows XP 和 Windows Server 2003 的計算機。
Blank line 就是一個空行。它標識新的註冊表路徑的開始。每個項或子項都是一個新的註冊表路徑。如果 .reg 文件中有多個項,空白行可以幫助您檢查內容和排查其中的問題。
RegistryPathx 是存放要導入的第一個值的子項的路徑。請用方括號將路徑括起來,並用反斜槓將層次結構的各個級別隔開。例如:
[HKEY_LOCAL_ MACHINE/SOFTWARE/Policies/Microsoft/Windows/System]
一個 .reg 文件可以包含多個註冊表路徑。 如果註冊表中不存在路徑語句中底層的層次結構,將創建一個新的子項。註冊表文件的內容將按照它們的輸入順序發送到註冊表。因此,如果您要新建一個包含另一子項的子項,必須按正確的順序輸入行。
DataItemNamex 是要導入的數據項的名稱。如果文件中的數據項在註冊表中不存在,.reg 文件將添加該數據項及其值。如果數據項存在,.reg 文件中的值將覆蓋現有的值。數據項的名稱用引號引起來。數據項名稱後緊跟着一個等號 (=)。
DataTypex 是註冊表值的數據類型,緊跟在等號後面。對於 REG_SZ(字符串值)以外的所有數據類型,數據類型後都緊跟一個冒號。如果數據類型是 REG_SZ,則不包括數據類型值或冒號。在這種情況下,Regedit.exe 假定數據類型爲 REG_SZ。下表列出了典型的註冊表數據類型:
數據類型 | .reg文件中的寫法 |
REG_BINARY | hex |
REG_DWORD | dword |
REG_EXPAND_SZ | hex(2) |
REG_MULTI_SZ | hex(7) |
注意:可以爲同一個註冊表路徑輸入多個數據項行。
添加註冊表項或添加和更改註冊表值
一個簡單的代碼如下所示:
1: Windows Registry Editor Version 5.00
2:
3: [HKEY_CLASSES_ROOT/..test]
4: @="Default項的文本"
5: "reg_binary_test"=hex:E0,31
6: "reg_dword_test"=dword:000000ff
7: "reg_expand_sz_test"=hex(2):30,00,31,00
8: "reg_multi_sz_test"=hex(7):30,00,31,00
上面代碼中值得注意的是:
第3行中的“..test”主要是爲了在註冊表中查找方便而採用的命名
@代表註冊表項中默認項----(Default)
從代碼中可以看出REG_SZ類型是不需要寫出類型的
REG_BINARY是16進制的形式書寫的
DWORD類型是16進制的形式書寫的,前面的0可以不寫,寫出來主要是想把其長度(4個字節)表達清楚
REG_EXPAND_SZ與REG_MULTI_SZ實際上都是使用unicode編碼表示的,編輯這兩種類型應該需要編碼轉換軟件,不過這兩種類型一般很少用。
刪除註冊表項和值
要使用 .reg 文件刪除註冊表項,請在 .reg 文件中的 RegistryPath 前放置一個連字符 (-)。例如,要刪除上文中的..test 項:
1: Windows Registry Editor Version 5.00
2:
3: [-HKEY_CLASSES_ROOT/..test]
注意前面多了一個"-"號。
要使用 .reg 文件刪除註冊表值,請在 .reg 文件中的 DataItemName 後的等號後放置一個連字符 (-)。例如,要從上文中的..test 註冊表項中刪除reg_binary_test註冊表值:
1: Windows Registry Editor Version 5.00
2:
3: [HKEY_CLASSES_ROOT/..test]
4: "reg_binary_test"=-
重命名註冊表項和值
要重命名項或值,請刪除該項或值,然後創建一個具有新名稱的新項或新值。
需要注意的問題
最後值得一提的是,在REG_SZ類型中如果需要插入引號或者路徑符號,那麼需要使用轉義字符“/”,例如:
1: Windows Registry Editor Version 5.00
2:
3: [HKEY_CLASSES_ROOT/dllfile/shell/exescope]
4: @="用 eXeScope 編輯資源"
5: [HKEY_CLASSES_ROOT/dllfile/shell/exescope/Command]
6: @="E://softdsgn//tools//eXeScope//Exescope.exe /"%1/""
7:
8: [HKEY_CLASSES_ROOT/exefile/shell/exescope]
9: @="用 eXeScope 編輯資源"
10: [HKEY_CLASSES_ROOT/exefile/shell/exescope/Command]
11: @="E://softdsgn//tools//eXeScope//Exescope.exe /"%1/""
注:這段代碼是在explorer右鍵菜單上增加一個菜單項,當鼠標右鍵點擊dll文件或者exe文件時,右鍵菜單多了一個“用exescope編輯資源”。