2010-10-06 123 views
0

我想使用C/C++(最好是C)来枚举整个Windows注册表,我使用递归来做到这一点,但我一直运行到堆栈溢出,我明白,但即时通讯无法想象做这个没有recusion。 如何做到这一点没有递归的建议将是伟大的,thx。注册表搜索

+2

你究竟试过了什么[你的代码在哪里]? – jacknad 2010-10-06 15:18:45

回答

2

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

我怀疑你在栈上使用了一些巨大的数组,这通常是一个坏主意,但特别是递归。尝试使用malloc来代替所需的任何大数据。

+0

+1。我自己用递归做了这个,没有问题。 – casablanca 2010-10-06 15:39:32

0

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

  1. 从队列中获取项目。
  2. 枚举其内容。
  3. 将其包含的任何链接添加到队列中。

...其中“三通”将是“子目录”为文件系统,“子项”为注册表等

+0

这听起来像它会工作,你有任何指向我可以使用的教程或示例代码的链接?因为我不知道你在说什么:) – Josh 2010-10-06 16:06:40

+0

反正我不能想到任何权利。抱歉。 – 2010-10-06 16:51:08