"Человек - самое уязвимое место в системе безопасности.."

структура и API функции реестра windows

Особенности и структура реестра Windows

Реестр — системный журнал, в который программы записывают свои системные данные. Однако есть еще программы, которые записывают по старинке, в INI-файлы. Реестр Windows являет собой иерархическую базу данных, где лежат данные системных настроек, путей, переменных а также данные программ. В современных WIndows реестр лежит в двух файлах в каталоге SysteMRoot — User.dat и System.dat. Второй файл содержит данные обо всех пользователях ПК, первый — те данные, которые были реализованы конкретным пользователем.

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

Также неопытным пользователям прежде чем изменять любые данные в реестре, есть рекомендация: сделать резервную копию реестра. Для этого в меню реестра есть команда Export Registry File, которая делает резервную копию всего реестра.

С точки зрения разработчика, не нужно знать редактирования реестра, нужно знать как он используется приложениями которые записывают и читают данные из него. Реестр имеет иерархическую структуру. В окне же это показано как каталоги и подкаталоги. Первые ответвления показаны в таблице 1.

Таблица 1

Раздел Содержимое
HKEY_CLASSES_ROOT Содержит данные о зарегистрированных классах и расширениях документов. Этот раздел является ссылкой на подраздел — HKEY_LOCAL_MACHINESOFTWAREClasses
HKEY_CURRENT_USER Данные о настройках текущего пользователя (сетевые настройки, рабочий стол и тд) Данные раздел является ссылкой на подраздел HKEY_USERS для конкретного пользователя
HKEY_LOCAL_MACHINE Данные о аппаратных настроек, схемы подключения аппаратных элементов, глобальные настройки приложений
HKEY_USERS Данные о всех пользователях, которые зарегистрированы в данной локальной системе
HKEY_CURRENT_CONFIG Ссылка на подраздел — HKEY_LOCAL_MACHINEConfigxxxx, где хххх — числовая характеристика конкретной аппаратной конфигурации
HKEY_DYN_DATA Динамические данные для устройств Plug-and-Play и драйверов виртуальных устройств

Также в реестре присутствуют различные типы данных. Такими данными можно пользоваться с помощью API-функций (RegQueryValueEx() и др.). В табл.2 показаны эти типы.

Таблица 2

Тип данных Описание
REG_BINARY Необработанные двоичные данные. Множество данных об аппаратных элементах хранится в двоичном виде и выводится в окне реестра в шестнадцатеричном формате
REG_DWORD Данные которые записаны целым числом. Многие параметры драйверов и служб устройств работают с этим типом
REG_SZ Текстовая строка в формате, это удобно для чтения данных человеком. Этот тип предназначен обычно для описания
REG_EXPAND_SZ Расширяемая строка информации. Это строка содержит текст переменной, которая может редактироваться приложением
REG_MULTI_SZ Многострочное поле, параметры которого являются элементом списка. Строки разделены символом NULL
REG_FULL_RESOURCE_DESCRIPTOR Список который служит для хранения данных о аппаратных компонентов и драйвера
REG_LINK Ссылка символьная в кодировке Unicode
REG_RESOURCE_LIST Список ресурсов драйверов устройств
REG_NONE Тип значения не определен

API-функции для работы с реестром Windows

В Windows реализовано 26 API-функций для работы с реестром. Они показаны в табл.3.

Таблица 3

Функция Действие
RegCloseKey Закрывает дескриптор указанного раздела без обновления реестра
RegConnectRegistry Реализует связь с дескриптором реестра на другом компьютере. На локальном компьютере не актуально
RegCreateKey Создает заданный раздел, если таков существует, то открывает его
RegCreateKeyEx Создает заданный раздел, если таков существует, то открывает его — Для Windows 98-95-NT
RegDeleteKey Удаляет заданный раздел и его подразделы (Win 98-95), Для Win NT не удаляет подразделы.
RegDeleteValue Удаляет значение параметра из заданного раздела
RegEnumKey* Показывает список подразделов текущего раздела
ReEnumKeyEx Показывает список подразделов текущего раздела — Для Win 98-95-NT
RegEnumValue Показывает список параметров в текущем разделе
RegFlushKey Записывает все атрибуты заданного раздела в реестр
RegGetKeySecurity Возвращает дескриптор безопасности текущего раздела
RegNotifyChangeKeyValue Оповещает данную функцию об изменении параметров или содержимого раздела, не оповещает об удалении раздела
RegOpenKey* Открывает указанный раздел, но не создает его
RegOpenKeyEx Открывает указанный раздел, но не создает его (Win 98-95-NT)
RegQueryInfoKey** Считывает данные об открытом подразделе — размер, номер, класс атрибут безопасности и др.
RegQueryMultipleValues Возвращает данные и тип для списка имен параметров
RegQueryValue* Считывает параметр который связан с безымянным параметром указанного раздела
RegQueryValueEx Считывает параметр который связан с безымянным параметром указанного раздела (Для Windows 98-95-NT)
RegReplaceKey Меняет файл, где хранятся копии разделов и подразделов. Обновления можно увидеть после перезагрузки компьютера
RegRestoreKey Читает данные реестра из определенного файла, и копирует их в подразделы данного раздела
RegSaveKey Сохраняет данный раздел и подразделы в определенный файл
RegSetKeySecurity Ставит атрибут безопасности открытого раздела
RegSetValue* Связывает безымянный атрибут с определенным разделом
RegSetValueEx** Сохраняет данные в определенном атрибуте раздела
RegUnLoadKey Выгружает из реестра указанный раздел, его подразделы и параметры (удаляет)