代码之家  ›  专栏  ›  技术社区  ›  sharptooth

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

  •  0
  • sharptooth  · 技术社区  · 15 年前

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

    regedit.exe /e ExportResult.reg HKEY_LOCAL_MACHINE\SubTreeIWantToExport
    

    问题是,Regedit可能需要在Vista和更高版本上提升权限,并且运行我的程序的用户可能没有足够的权限执行此操作,但可能有足够的权限读取该子树。此外,我还预见到64位系统上的SysWow64存在细微的问题。所以运行regedit是一个错误的选项。

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

    是否有其他方法从我的程序中读取和导出Windows注册表子树?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Steve Townsend    15 年前

    没有用于执行注册表导出/导入的单镜头Win32或.NET API。

    你可以这样做 this 但我认为你的要求是避免暴力。但是,您可能想到的任何解决方案都需要在基础的win32 API上构建,就像这样 regedit .