Как реализовать итератор прямого обхода для перечисления реестра Windows

Я был в состоянии использовать Boost Iterator Facade построить обычай Однопроходной итератор перебирать (способом C ++) значения, содержащиеся в разделе реестра Windows, оборачивая C API RegEnumValue.

Например.:

// For each value 'v' under the given registry key 'hKey':
for (const auto& v : RegistryValueIterator(hKey))
{
...
}

В основном, итератор increment вызовы методов RegEnumValue увеличивая dwIndex параметр (изначально установлен в 0 в конструкторе класса итератора), и когда ERROR_NO_MORE_ITEMS возвращается, который сопоставлен с «конец» итератор.

Я использовал boost::single_pass_traversal_tag:

class RegistryValueIterator
: public boost::iterator_facade< RegistryValueIterator,
RegistryValueEntry,
boost::single_pass_traversal_tag >
{
...

Boost.Filesystem-х directory_iterator, который оборачивает FindNextFile API в реализации Windows, реализован в виде один проход Итератор тоже. И аналогично std::experimental::filesystem::directory_iterator является Итератор ввода также (не прямой итератор).

Таким образом, можно ли при перечислении реестра обновить категорию итератора до Итератор обхода вперед? Какие шаги я должен предпринять для достижения этой цели?

Другими словами, возможно ли реализовать многоходовых Обход, требуемый итераторами прямого обхода с использованием API-интерфейсов реестра Windows, таких как RegEnumValue? Если так, то как?


Постскриптум Я обсуждал реестр значение перечисление / итерация, но вещи очень похожи для перечисления / итерации через реестр ключи а также, используя RegEnumKeyEx API.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector