Получение данных из реестра

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

Чтобы получить подробные данные о конкретном подразделе, приложение может вызвать функцию RegQueryInfoKey . Функция RegGetKeySecurity извлекает копию дескриптора безопасности, защищающего ключ.

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

Функция RegQueryMultipleValues извлекает тип и данные для списка имен значений, связанных с открытым разделом реестра. Эта функция полезна для поставщиков динамических ключей, так как обеспечивает согласованность данных путем получения нескольких значений в атомарной операции.

Так как другие приложения могут изменять данные в значении реестра с момента, когда приложение сможет прочитать значение и использовать его, может потребоваться убедиться, что приложение имеет последние данные. Функцию RegNotifyChangeKeyValue можно использовать для уведомления вызывающего потока при изменении атрибутов или содержимого раздела реестра или при удалении ключа. Функция сообщает объекту события, чтобы уведомить вызывающий объект. Если поток, вызывающий RegNotifyChangeKeyValue , завершает работу, событие получает сигнал и мониторинг раздела реестра останавливается.

Вы можете контролировать или указывать, какие изменения следует сообщать, с помощью фильтра уведомлений или флага. Как правило, сведения об изменениях передаются путем передачи сигнала о событии, которое вы указываете в функцию. Обратите внимание, что функция RegNotifyChangeKeyValue не работает с удаленными дескрипторами.

Дополнительные сведения о мониторинге операций реестра см. в разделе Реестр.