reg binary что это
Типы данных реестра
Как уже говорилось ранее, в реестре хранится громадное количество информации, включающее профили всех пользователей, сведения об установленном программном обеспечении и типах документов, которые могут быть созданы каждой программой, информация о свойствах папок и значках приложений, а также установленном оборудовании и используемых портах.
Поскольку реестр Microsoft Windows представляет собой сложную реляционную базу данных, вся информация, которая может храниться в конечных информационных контейнерах этой базы (параметрах), должна быть строго классифицирована. Классификация хранящихся в параметрах значений производится по типу данных, представляющих это значение. Всего насчитывается 11 таких типов
Раздел и подраздел могут содержать 0, 1 или несколько параметров, параметр по умолчанию, а также 0 или несколько подразделов. Каждый параметр имеет имя, тип и значение.
Три части параметра реестра всегда располагаются в определенном порядке: Имя, Тип данных, значение (например: [RegistrySizeLimit] [REG_DWORD] [0x8000000]).
В таблице, которая будет приведена ниже, содержится список типов данных, определенных и используемых Windows на сегодняшний день.
Максимальная длина имени параметра:
Значения большого размера (больше 2048 байт) хранятся во внешних файлах, а в реестр заносится имя такого файла. Это способствует повышению эффективности использования реестра.
Максимальный размер параметра:
Ниже приводится назначение этих параметров.
REG_BINARY
Необработанные двоичные данные. Большинство сведений об аппаратных компонентах хранится в виде двоичных данных и выводится в редакторе реестра в шестнадцатеричном формате.
REG_DWORD
Данные, представленные целым числом (4 байта, 32 бита). Многие параметры служб и драйверов устройств имеют этот тип и отображаются в двоичном, шестнадцатеричном или десятичном форматах. Эквивалентами типа DWORD являются DWORD_LITTLE_ENDIAN (самый младший байт хранится в памяти в первом числе) и REG_DWORD_BIG_ENDIAN (самый младший байт хранится в памяти в последнем числе).
REG_EXPAND_SZ
Расширяемая строка данных. Эта строка представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения.
REG_MULTI_SZ
Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк в формате, удобном для восприятия человеком, обычно имеют именно этот тип данных. Записи разделяются пробелами, запятыми или другими символами.
REG_SZ
Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных. Имеет фиксированную длину.
REG_LINK
Символическая ссылка в формате Юникод.
REG_FULL_RESOURCE_DESCRIPTOR
Последовательность вложенных массивов. Служит для хранения списка ресурсов, которые используются физическим устройством. Обнаруженные данные система сохраняет в разделе \HardwareDescription. В окне редактора реестра эти данные отображаются в виде двоичного параметра в шестнадцатеричном формате
REG_RESOURCE_LIST
Последовательность вложенных массивов. Служит для хранения списка ресурсов, которые используются драйвером устройства или управляемым им физическим устройством. Обнаруженные данные система сохраняет в разделе \ResourceMap. В окне редактора реестра эти данные отображаются в виде двоичного параметра в шестнадцатеричном формате
REG_RESOURCE_REQUIREMENTS_LIST
Последовательность вложенных массивов. Служит для хранения списка драйверов аппаратных ресурсов, которые могут быть использованы определенным драйвером устройства или управляемым им физическим устройством. Часть этого списка система записывает в раздел \ResourceMap. Данные определяются системой. В окне редактора реестра они отображаются в виде двоичного параметра в шестнадцатеричном формате
REG_QWORD
Данные, представленные в виде 64-разрядного целого. Начиная с Windows 2000, такие данные отображаются в окне редактора реестра в виде двоичного параметра
REG_NONE
Данные, не имеющие определенного типа. Такие данные записываются в реестр системой или приложением. В окне редактора реестра отображаются в виде двоичного параметра в шестнадцатеричном формате
Registry Value Types
A registry value can store data in various formats. When you store data under a registry value, for instance by calling the RegSetValueEx function, you can specify one of the following values to indicate the type of data being stored. When you retrieve a registry value, functions such as RegQueryValueEx use these values to indicate the type of data retrieved.
The following registry value types are defined in Winnt.h.
Value | Type |
---|---|
REG_BINARY | Binary data in any form. |
REG_DWORD | A 32-bit number. |
REG_DWORD_LITTLE_ENDIAN | A 32-bit number in little-endian format. Windows is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_DWORD in the Windows header files. |
REG_DWORD_BIG_ENDIAN | A 32-bit number in big-endian format. Some UNIX systems support big-endian architectures. |
REG_EXPAND_SZ | A null-terminated string that contains unexpanded references to environment variables (for example, «%PATH%»). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function. |
REG_LINK | A null-terminated Unicode string that contains the target path of a symbolic link that was created by calling the RegCreateKeyEx function with REG_OPTION_CREATE_LINK. |
REG_MULTI_SZ | A sequence of null-terminated strings, terminated by an empty string (\0). The following is an example: String1\0String2\0String3\0LastString\0\0 The first \0 terminates the first string, the second to the last \0 terminates the last string, and the final \0 terminates the sequence. Note that the final terminator must be factored into the length of the string. |
REG_NONE | No defined value type. |
REG_QWORD | A 64-bit number. |
REG_QWORD_LITTLE_ENDIAN | A 64-bit number in little-endian format. Windows is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_QWORD in the Windows header files. |
REG_SZ | A null-terminated string. This will be either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI functions. |
String Values
If data has the REG_SZ, REG_MULTI_SZ, or REG_EXPAND_SZ type, the string may not have been stored with the proper terminating null characters. Therefore, when reading a string from the registry, you must ensure that the string is properly terminated before using it; otherwise, it may overwrite a buffer. (Note that REG_MULTI_SZ strings should have two terminating null characters.)
When writing a string to the registry, you must specify the length of the string, including the terminating null character (\0). A common error is to use the strlen function to determine the length of the string, but to forget that strlen returns only the number of characters in the string, not including the terminating null. Therefore, the length of the string should be calculated as follows: strlen( string ) + 1
A REG_MULTI_SZ string ends with a string of length 0. Therefore, it is not possible to include a zero-length string in the sequence. An empty sequence would be defined as follows: \0.
The following example walks a REG_MULTI_SZ string.
Byte Formats
In little-endian format, a multi-byte value is stored in memory from the lowest byte (the «little end») to the highest byte. For example, the value 0x12345678 is stored as (0x78 0x56 0x34 0x12) in little-endian format.
In big-endian format, a multi-byte value is stored in memory from the highest byte (the «big end») to the lowest byte. For example, the value 0x12345678 is stored as (0x12 0x34 0x56 0x78) in big-endian format.
Каково назначение основных разделов реестра Windows
Вступление
В данной статье будут рассмотрены основные ветки реестра Windows, а также их назначение. Список корневых разделов можно увидеть ниже:
Типы данных в реестре
В реестре могут храниться данные семи типов:
При добавлении параметров в реестр нужно обязательно использовать тот тип данных, который указан в источнике, откуда взята информация о необходимости добавить параметр. Если тип данных не будет соответствовать тому, который ожидает найти приложение в указанном месте, то последствия могут быть непредсказуемыми.
HKEY_LOCAL_MACHINE (HKLM)
HKLM\Hardware
В разделе HKLM\Hardware хранится информация об устройствах, обнаруженных в компьютере. Все параметры этого раздела хранятся не на жестком диске, а в оперативной памяти. Когда компьютер распознает запуск устройства, он нумерует найденное устройство, исследуя шину и отдельные классы устройств (например, порты или клавиатуру). В этом разделе имеются три основных подраздела:
Могут быть и дополнительные подразделы, в зависимости от конфигурации компьютера. Например, компьютеры с поддержкой интерфейса управления питанием (ACPI), будут иметь подраздел ACPI, содержащий информацию о конкретных возможностях ACPI на этом компьютере.
HKLM\SAM
В разделе HKLM\SAM хранятся локальные учетные записи или группы, созданные на компьютере. Раздел скрыт.
HKLM\Security
В разделе HKLM\Security содержится всевозможная информация, относящаяся к защите. Формат не документирован. Используется для кэширования верительных данных для входа в систему, настроек политики и разделяемых секретных данных сервера. Подраздел Security\SAM содержит копию большинства данных из HKLM\SAM
HKLM\Software
HKLM\System\CurrentControlSet
Последним действием фазы загрузки Windows является обновление реестра, которое должно зафиксировать набор служб и управляющих настроек, применявшийся при последней успешной загрузке. CurrentControlSet всегда указывает на набор управляющих настроек, используемых системой в текущий момент. В HKLM\System есть много подразделов ControlSetXXX, каждый из которых описывает набор управляющих настроек, существовавших в какой-либо момент времени, независимо от того, была ли загрузка успешной или нет. CurrentControlSet является указателем на последний набор управляющих настроек, при котором загрузка была успешной. Поскольку трудно определить сразу, какая из загрузок была успешной, то операционная система и приложения пользуются указателем CurrentControlSet.
В разделе, описывающем набор управляющих настроек, среди прочих, имеются четыре следующих раздела:
HKEY_USERS (HKU)
HKEY_CURRENT_CONFIG (HKCC)
HKEY_CURRENT_USER (HKCU)
Раздел HKEY_CURRENT_USER (HKCU) указывает на профиль текущего пользователя (вошедшего в данный момент в систему) внутри HKU. Microsoft требует, чтобы приложения хранили все предпочтения пользователей в подразделах под HKCU. Например, HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Paint содержит личные настройки пользователей программы Paint.
HKEY_CLASSES_ROOT (HKCR)
Типы значений реестра
В Winnt. h определены следующие типы значений реестра.
Строковые значения
Если данные имеют тип REG _ SZ, REG _ Multi _ SZ или REG _ expand _ SZ, строка может быть не сохранена с соответствующими завершающими символами NULL. Поэтому при чтении строки из реестра необходимо убедиться, что строка должна завершиться должным образом, прежде чем использовать ее. в противном случае он может перезаписать буфер. (Обратите внимание, что REG _ НЕСКОЛЬКО _ SZ строк должны иметь два завершающих нуль символа.)
При записи строки в реестр необходимо указать длину строки, включая завершающий нуль-символ ( \ 0). Распространенная ошибка заключается в использовании функции strlen для определения длины строки, но чтобы забывать, что strlen возвращает только число символов в строке, не включая завершающее значение null. Таким образом, длина строки должна быть вычислена следующим образом: strlen( string ) + 1
Строка реестра с _ несколькими _ SZми заканчивается строкой длиной 0. Поэтому невозможно включить в последовательность строку нулевой длины. Пустая последовательность будет определена следующим образом: \ 0.
В следующем примере рассматривается строка реестра с _ несколькими _ SZми.
Форматы байтов
В формате с прямым порядком байтов значение в байтах хранится в памяти с наименьшего байта («маленький конец») до самого большого байта. Например, значение 0x12345678 хранится как (0x78 0x56 0x34 0x12) в формате с прямым порядком байтов.
В формате с обратным порядком байтов многобайтовое значение хранится в памяти из самого длинного байта («Big-конец») до наименьшего байта. Например, значение 0x12345678 сохраняется как (0x12 0x34 0x56 0x78) в формате с обратным порядком байтов.
Устройство реестра Windows 7/8/10
В этом уроке мы более подробно рассмотрим устройство реестра операционной системы Windows (данная информация актуальна для XP, 7, 8, 8.1, 10).
Если вы хотите узнать, что такое системный реестр, можете начать с предыдущего урока, в нём я всё подробно рассказал, вот ссылка. Если же вам уже знакомы основы, то приглашаю погрузиться в глубины реестра ОС Windows.
Как устроен реестр Windows
Структуру реестра можно увидеть в специальной программе «Редактор реестра» (подробные инструкции по его запуску можно найти здесь).
Самый простой вариант запуска: нажмите сочетание клавиш Win+R, введите команду regedit и нажмите ОК.
Редактор реестра очень похож на проводник, а структура реестра похожа на файловую систему вашего компьютера:
— слева отображаются разделы, похожие на папки, внутри них есть подразделы (совсем как подпапки);
— справа отображаются параметры (очень похожи на файлы) и их значения.
Устройство реестра Windows 10
Разделы реестра Windows
Реестр Windows 10, 8, 7, XP состоит из пяти стандартных разделов – корневых ключей:
Для простоты, их часто указывают в сокращенном обозначении (аббревиатура из первых букв): HKCR, HKCU, HKLM, HKU, HKCC.
Назначение разделов реестра
Разберемся с разделами реестра Windows 10 немного подробнее (если покажется сложным, переходите сразу к параметрам реестра):
Поздравляю, мы уже разобрались с половиной урока, и вы знаете о пяти корневых разделах реестра!
Чтобы изучить устройство реестра, осталось познакомиться с параметрами и их значениями.
Виды параметров реестра Windows
Как мы уже знаем, разделы и подразделы содержат параметры (на английском языке — value entries). Параметры могут иметь различные значения, например: путь к файлу, название программы, различные числа и т.д.
Пример структуры реестра Windows 10
Параметры реестра делятся на три основных типа (и несколько разновидностей):
Подробнее о параметрах реестра
Попробую кратко описать отличия параметров реестра:
Параметр | Описание |
---|---|
Строковый параметр REG_SZ | Содержит строку текста, например, путь к файлу или папке («C:\Windows»). |
Расширенный строковый параметр REG_EXPAND_SZ | Может содержать специальные переменные, например, вместо «C:\Windows» можно указать %systemroot% (фактически, это будет тот же путь, но мы можем использовать его, если не знаем заранее, куда установлена ОС). |
Многострочный параметр REG_MULTI_SZ | Может содержать более одной строки, удобно, если нужно внести целый список. |
Двоичный параметр REG_BINARY | Набор двоичных данных, которые отображаются в шестнадцатеричном формате (например, 10 82 A0 8F). Используется для хранения информации об оборудовании. |
Параметр DWORD REG_DWORD | Это целое число, которое может быть в двоичном, десятичном или шестнадцатеричном виде (например, 0x00000020 (32) — в скобках указано десятичное значение ключа). Длина числа – 4 байта (32 бита). Часто этот параметр работает как переключатель: 1 – включено, 0 – выключено. |
На самом деле, видов параметров в два раза больше, но чтобы понять принципы устройства реестра, их разбирать не обязательно (но если желание появилось, обязательно напишите в комментариях!)
Внешний вид различных параметров
Вот как отображаются все перечисленные параметры в редакторе реестра:
Виды параметров реестра в Windows 10 и 8 (пример)
То есть, все виды строковых параметров обозначаются значком с буквами «ab», а двоичные и числовые параметры обозначаются значком с цифрами «0011».
Ух ты, кажется, мы рассмотрели всё, что нужно!
Заключение
Итак, в этом уроке мы разобрались с устройством реестра Windows 10/8/7/XP.
Давайте повторим: реестр состоит из пяти разделов, которые могут содержать подразделы (как папки в проводнике). В разделах и подразделах находятся параметры (строковые и числовые). Изменяя значения параметров, мы можем изменять настройки операционной системы, программ и пользователя.
Жду ваших отзывов и вопросов в комментариях!
В следующем уроке мы узнаем, где хранится реестр на жестком диске. Подписывайтесь на новости, делитесь с друзьями в социальных сетях.
P.S. Минутка юмора
А вот что бывает, если не изучать IT-уроки 🙂
Копирование запрещено, но можно делиться ссылками: