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

标签 python windows registry winreg

我正在尝试从 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/

相关文章:

给定的 C++ Windows API GetSecurityInfo 无效句柄

c# - 检查是否安装了VLC

c++ - 为什么 windows.h 禁用包警告?

installation - Inno Setup 在 Windows x64 上设置命名管道

python - 使用 ALTER TABLE 添加 yy-mm-dd 列时出现 "Incorrect syntax"

Python XML 删除一些元素及其子元素,但保留特定元素及其子元素

windows - php composer.phar 更新不适用于 Symfony 安装

java - 尝试用一个 .bat 文件启动两个 .bat 文件

Python 方法参数在方法调用后评估

python - 在时间戳/日期时间/日期时间64类型的列上运行groupby时如何正确使用pandas agg函数?