Поиск в реестре - PullRequest
       3

Поиск в реестре

0 голосов
/ 06 октября 2010

Я пытаюсь использовать C / C ++ (предпочтительно C) для перечисления всего реестра Windows, я использовал рекурсию для этого, но я продолжаю сталкиваться с переполнением стека, что я понимаю, но я не могу придумать, как это сделать без отказов. Советы о том, как сделать это без рекурсии, было бы здорово, спасибо.

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

Пока ваша рекурсия выполняется только один раз для каждого уровня подключа, я не понимаю, почему это должно переполнять стек. Конечно, реестр Windows - это кошмар, но я не думаю, что его иерархия ключей имеет тысячи уровней.

Я подозреваю, что вы используете в стеке несколько гигантских массивов, что в целом является плохой идеей, особенно в случае рекурсии Попробуйте выделить любые большие данные, которые вам нужны, с помощью malloc.

0 голосов
/ 06 октября 2010

Поиск в поисках хлеба был бы очевидной возможностью. Основная идея заключается в использовании очереди мест для поиска. Начните с помещения корня в очередь, затем повторяйте следующие шаги, пока очередь не станет пустой:

  1. Получить предмет из очереди.
  2. Перечислите его содержимое.
  3. Добавить все содержащиеся в очереди ссылки.

... где "links" будут "подкаталогами" для файловой системы, "subkeys" для реестра и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...