我正在尝试从 Windows 注册表中提取一些数据,包括 XP 计算机上的软件 hive 和 ntuser.dat。目前,我使用 reg.exe
加载配置单元,并使用 _winreg
提取数据。我需要使用 reg.exe,因为我备份数据的计算机通常处于离线状态,我将它们的硬盘驱动器放入外部驱动器托架中,然后从另一个驱动器托架中加载配置单元Windows session 。启动正在备份的计算机是不可行的,因为它们经常出现硬盘驱动器故障或无法启动。
我见过一个名为 hivex
的实用程序,它在 Linux 下运行,它将 c 模块与 python 包装器结合在一起,允许对 Windows 注册表进行只读(有限写入)访问,而无需使用Windows 注册表 API。遗憾的是,似乎没有 Windows 版本的 hivex
,大概是因为没有人认为需要通过直接访问 hive 文件来访问 Windows 下的 Windows 注册表。
我很想放弃由 subprocess.Popen()
调用 reg.exe
的依赖,因为调用外部可执行文件会带来很多问题,而且它使得备份实用平台受到限制。
有谁知道有一个允许直接访问 hive 文件本身的 python 模块吗?我已经知道,并且目前正在使用 _winreg
,所以建议这没什么帮助。提前致谢。
最佳答案
我不确定它有多好,但是pywin32库提供了大多数 Windows API 的绑定(bind)。我对 Windows API 不太了解,不知道是否可以打开任意配置单元文件,但它可能值得快速查看(该版本包含具有完整 API 映射的 CHM)。
关于Python:不使用注册表 API 访问 Windows 注册表配置单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887694/