如何在不运行 Regedit 的情况下读取和导出 Windows 注册表的子树?

Posted

技术标签:

【中文标题】如何在不运行 Regedit 的情况下读取和导出 Windows 注册表的子树?【英文标题】:How do I read and export a subtree of Windows registry without running Regedit? 【发布时间】:2010-10-29 12:06:17 【问题描述】:

我有一个 32 位 C++ 程序,它收集诊断数据以帮助对我们的软件进行故障排除。我希望它导出注册表的某个子树 - 例如:

regedit.exe /e ExportResult.reg HKEY_LOCAL_MACHINE\SubTreeIWantToExport

问题是 Regedit 可能需要在 Vista 及更高版本上提升权限,并且运行我的程序的用户可能没有足够的权限,但可能有足够的权限从该子树中读取。我还预见到 SysWOW64 在 64 位系统上会出现一些微妙的问题。所以运行 Regedit 是一个不好的选择。

当然,我的程序可以读取注册表本身并以某种方式生成一个等效的 .reg 文件,但实现该功能将是重新发明***。

还有其他方法可以从我的程序中读取和导出 Windows 注册表子树吗?

【问题讨论】:

【参考方案1】:

没有用于注册表导出/导入的单一 Win32 或 .Net API。

你可以这样做this,但我认为你的要求是避免暴力。但是,您可能想出的任何解决方案都需要构建在底层 Win32 API 之上,regedit 也是如此。

【讨论】:

以上是关于如何在不运行 Regedit 的情况下读取和导出 Windows 注册表的子树?的主要内容,如果未能解决你的问题,请参考以下文章

PHP:在不改变 memory_limit 和 max_execution_time 的情况下读取和导出大数据

如何在不使用用户设置的情况下在运行时读取/写入 app.config 设置?

如何在不带整个库的情况下将场景或影片剪辑导出为 SWF?

如何在不破坏浏览器的情况下导入大量Wordpress帖子?

如何在不保存 MS 访问查询的情况下将查询数据导出到 txt 文件

如何在不使用复制到 memory2 的情况下返回导出路径? [关闭]