Другое Концепт библиотеки для работы с реестром Windows

Receiver

🥩 Передай meat, всё в скип, я в темпе
Автор темы
Проверенный
597
819
Концепт:
  • class key - описывает ключ реестра
    • constructor(HKEY, key_path) - открывает handle
    • destructor() - закрывает handle
    • operator=(key) - копирует вложенные ключи и значения
    • keys_count() - количество под-ключей
    • values_count() - количество значений
    • value(value_name) - возвращает инициализированный объект value
    • tree() - вовзращает HKEY ветки
    • path() - возвращает путь
    • native_handle() - вовзращает открытый handle
  • function create_key(HKEY, key_path) - создаёт ключ
  • function rename_key(HKEY, old_path, new_path) - переименовывает/перемещает ключ
  • function delete_key(HKEY, path) - удаляет ключ, вложенные ключи и значения
  • class key_iterator - описывает итератор ключа
    • constructor(key)
  • class value - описывает значение реестра
    • constructor(key, value_name) - получает значение
    • name() - возвращает имя значения
    • is_dword() - проверяет на тип REG_DWORD
    • get_dword() - возвращает DWORD
    • set_dword(DWORD)
    • operator DWORD() - для авто определения типа DWORD result = value;
    • operator=(DWORD) - для авто определения типа value = DWORD{0xFFFFFF};
    • ... (так же для типов QWORD, SZ, BINARY, ...)
  • function delete_value(key, value_name) - удаляет значение
  • class value_iterator - описывает итератор значения реестра
    • constructor(key)
Пример:
C++:
registry_system::key key{HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones"};
for (auto& sub_key : registry_system::key_iterator{key}) {
    for (auto& value : registry_system::value_iterator{sub_key})
        std::cout << value.get_binary() << std::endl;
 
    registry_system::value value{sub_key, "Dlt"};
    if (value.is_string()) {
        const char* str_value{value};
        std::cout << str_value << std::endl;
        value = DWORD{0xFFFFFF}; // перезапишет значение с типом REG_DWORD
    }
}

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

Обновление концепта (24/09/23): Добавлены функции создания, копирования, переименования, удаления ключа и функция удаления значения.
 
Последнее редактирование: