C 注册表搜索

C 注册表搜索,c,recursion,registry,C,Recursion,Registry,我正在尝试使用C/C++(最好是C)枚举整个Windows注册表,我使用递归来做这件事,但我一直遇到堆栈溢出,我理解这一点,但我无论如何都想不出在没有递归的情况下做这件事。 关于如何在不使用递归的情况下执行此操作的建议非常好,thx。面包优先搜索是一种明显的可能性。基本思想是使用一个位置队列进行搜索。首先将根放入队列,然后重复以下步骤,直到队列为空: 从队列中获取项目 列举它的内容 将其包含的任何链接添加到队列 …其中“链接”将是文件系统的“子目录”,注册表的“子项”,等等。只要您的递归仅为每级

我正在尝试使用C/C++(最好是C)枚举整个Windows注册表,我使用递归来做这件事,但我一直遇到堆栈溢出,我理解这一点,但我无论如何都想不出在没有递归的情况下做这件事。
关于如何在不使用递归的情况下执行此操作的建议非常好,thx。

面包优先搜索是一种明显的可能性。基本思想是使用一个位置队列进行搜索。首先将根放入队列,然后重复以下步骤,直到队列为空:

  • 从队列中获取项目
  • 列举它的内容
  • 将其包含的任何链接添加到队列

  • …其中“链接”将是文件系统的“子目录”,注册表的“子项”,等等。

    只要您的递归仅为每级子项一次,我不明白为什么会溢出堆栈。当然Windows注册表是一场噩梦,但我不认为它的键层次结构有数千层之深


    我怀疑您在堆栈上使用了一些巨大的数组,这通常是个坏主意,但对于递归来说尤其如此。尝试使用
    malloc
    来分配所需的任何大数据。

    您实际尝试了什么[代码在哪里]?+1。我自己也用递归做过,没有任何问题。这听起来像是可行的,你有我可以使用的教程或示例代码的链接吗?因为我不知道你在说什么:)