注册表搜索

时间:2010-10-06 15:15:57

标签: c recursion registry

我正在尝试使用C / C ++(最好是C)来枚举整个Windows注册表,我使用递归来做这个但是我一直在运行堆栈溢出,我理解但是我无法想到反正这样做没有妄想。 关于如何在没有递归的情况下执行此操作的建议将是很好的,thx。

2 个答案:

答案 0 :(得分:2)

只要你的递归只是每个子级别的一次,我不明白为什么这应该溢出堆栈。当然Windows注册表是一场噩梦,但我不认为它的密钥层次结构是数千级。

我怀疑你在堆栈上使用了一些巨大的数组,这一般是个坏主意但尤其是递归。尝试使用malloc来分配您需要的任何大数据。

答案 1 :(得分:0)

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

  1. 从队列中获取一个项目。
  2. 列举其内容。
  3. 将其包含的所有链接添加到队列中。
  4. ...其中“links”是文件系统的“子目录”,注册表的“子键”等。