Python 3.x 如何读取Windows注册表文件以检查值?[Python]
我正在尝试对Windows注册表文件(.reg文件,脱机)执行审核检查,我希望可以利用Python对reg文件执行检查 例如(伪代码): 我试过查看winreg,但它似乎在使用Windows API的实时系统上进行检查。另一个问题是.reg文件太大(~200MB)Python 3.x 如何读取Windows注册表文件以检查值?[Python],python-3.x,windows,registry,Python 3.x,Windows,Registry,我正在尝试对Windows注册表文件(.reg文件,脱机)执行审核检查,我希望可以利用Python对reg文件执行检查 例如(伪代码): 我试过查看winreg,但它似乎在使用Windows API的实时系统上进行检查。另一个问题是.reg文件太大(~200MB) 如何使用Python执行这样的检查?我不知道是否有一个lib可以专门读取.reg文件,但从它看起来,它只是一个INI文件,顶部有一个额外的版本信息 下面是一个示例,说明如何使用configparser模块实现此目的。一些注意事项:
如何使用Python执行这样的检查?我不知道是否有一个lib可以专门读取.reg文件,但从它看起来,它只是一个INI文件,顶部有一个额外的版本信息 下面是一个示例,说明如何使用
configparser
模块实现此目的。一些注意事项:
- .reg文件以utf16编码
- 在将文件提供给
之前,ConfigParser
将跳过版本信息(类似于readline
)。否则将导致Windows注册表编辑器版本5.00
丢失SectionHeaderError
- 值的名称包括引号,这意味着您需要在键中查找值时显式添加它们李>
这样做可能会有一些缺点,例如,您获取的值是如何格式化的。我不知道是否有一个lib可以专门读取.reg文件,但从外观上看,它只是一个INI文件,顶部有一个额外的版本信息 下面是一个示例,说明如何使用
configparser
模块实现此目的。一些注意事项:
- .reg文件以utf16编码
- 在将文件提供给
之前,ConfigParser
将跳过版本信息(类似于readline
)。否则将导致Windows注册表编辑器版本5.00
丢失SectionHeaderError
- 值的名称包括引号,这意味着您需要在键中查找值时显式添加它们李>
但是,这样做可能会有一些缺点,例如,您获取的值的格式。谢谢您的回复。似乎我无法使用上面的代码读取注册表。我收到一个Unicode错误。将编码更改为“utf-16le”修复了此问题,但我收到了一个密钥错误。好的,那么根据Windows版本的不同,*.reg文件的外观可能会有所不同(我使用的是win7)。你能找到你想要找到的关键部分并把它添加到你的问题中吗?谢谢你的回答。似乎我无法使用上面的代码读取注册表。我收到一个Unicode错误。将编码更改为“utf-16le”修复了此问题,但我收到了一个密钥错误。好的,那么根据Windows版本的不同,*.reg文件的外观可能会有所不同(我使用的是win7)。你能查一下你想找到的关键部分并把它添加到你的问题中吗?
#Configure registry policy processing: Do not apply during periodic background processing
testloc = "C:\\Users\\test.reg"
datafile = open(testloc, "r")
read = datafile.read()
find(Software\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2})
check(NoBackgroundPolicy) #check if dword value is correct
if(dword == correct):
print("correct")
else:
print("wrong")
import configparser
testloc = "C:\\Users\\test.reg"
regdata = configparser.ConfigParser()
with open(testloc, "r", encoding="utf-16") as f:
f.readline() # skip version info in first line
regdata.read_file(f)
key = regdata[r"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}"]
value = key['"NoBackgroundPolicy"']
print(value)