註冊表文件(.reg)編寫方法

原本是很早以前寫在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編輯資源”。

參考文獻:http://support.microsoft.com/kb/310516/zh-cn

發佈了46 篇原創文章 · 獲贊 21 · 訪問量 72萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章