注册表文件(.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_BINARYhex
REG_DWORD dword
REG_EXPAND_SZhex(2)
REG_MULTI_SZhex(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

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我理解了你的问题。实现这一功能,可以使用Python的第三方库pyinstaller将Python脚本打包成可执行文件,同时使用winreg库将证书添加到“受信任的根证书颁发机构”中。 以下是一个示例代码,用于将证书文件打包并编写脚本自动添加到“受信任的根证书颁发机构”,共打包成一个exe文件: ```python import os import sys import winreg import ssl import requests import certifi import cryptography # 获取证书文件 def get_cert(): cert_file = certifi.where() with open(cert_file, 'rb') as f: cert = f.read() return cert # 添加证书到“受信任的根证书颁发机构” def add_cert_to_trusted(cert): # 打开证书存储库的注册表项 hKey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\SystemCertificates\AuthRoot\Certificates", 0, winreg.KEY_ALL_ACCESS) # 创建新的证书项 new_cert = winreg.CreateKey(hKey, "MyCert") # 设置证书值 winreg.SetValueEx(new_cert, "Certificate", 0, winreg.REG_BINARY, cert) # 关闭注册表项 winreg.CloseKey(new_cert) # 打包成exe文件 def pack_to_exe(): os.system("pyinstaller --onefile --noconsole main.py") if __name__ == '__main__': # 获取证书文件 cert = get_cert() # 添加证书到“受信任的根证书颁发机构” add_cert_to_trusted(cert) # 打包成exe文件 pack_to_exe() ``` 在这个示例代码中,我们使用certifi库获取证书文件,使用winreg库将证书添加到“受信任的根证书颁发机构”,并使用pyinstaller打包成exe文件。你可以根据自己的需要修改代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值