Python:Windows注册表配置单元访问不使用注册表API

Python: Windows registry hive access NOT using registry APIs

我试图从Windows注册表中提取一些数据,包括来自XP计算机的软件配置单元和ntuser.dat。目前我正在使用reg.exe加载配置单元和_winreg来提取数据。我需要使用reg.exe作为我备份数据的计算机通常处于脱机状态,我将硬盘驱动器放在外部驱动器托架中,并从另一个Windows会话中加载hives。启动正在备份的计算机是不可行的,因为它们通常会使硬盘出现故障或无法启动。

我见过一个名为hivex的实用程序,它在Linux下运行,它将c-module与python包装器结合在一起,允许对Windows注册表进行只读(有限写入)访问,而不使用Windows注册表API。遗憾的是,似乎没有Windows版本的hivex,因为没有人认为需要通过直接访问hive文件来访问Windows下的Windows注册表。

我喜欢放弃reg.exesubprocess.Popen()调用的依赖关系,因为调用外部可执行文件有很多问题,而且它使备份实用程序平台受限。

有没有人知道python模块允许直接访问hive文件本身?我已经知道了,目前正在使用_winreg,所以建议这样做不会有用。提前致谢。


我不确定它有多好,但是pywin32库提供了对大多数Windows API的绑定。 我不知道windows API是否足以知道你是否可以打开任意的hive文件,但是值得快速查看(该版本包含带有完整API映射的CHM)。


您在调用外部应用程序或使用注册表API时遇到问题吗? 如果是前者,您可以使用RegLoadKey / RegUnLoadKey自行加载和卸载荨麻疹。 如果是后者那么我肯定有人写了一个C库来直接解析荨麻疹。 谷歌的快速搜索给了我微软的离线注册库。


你有没有看过regobj它提供pythonic访问注册表值(但它仍然基于_winreg)