Reg sz в реестре что это
Перейти к содержимому

Reg sz в реестре что это

  • автор:

Типы данных реестра

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

Поскольку реестр Microsoft Windows представляет собой сложную реляционную базу данных, вся информация, которая может храниться в конечных информационных контейнерах этой базы (параметрах), должна быть строго классифицирована. Классификация хранящихся в параметрах значений производится по типу данных, представляющих это значение. Всего насчитывается 11 таких типов

Раздел и подраздел могут содержать 0, 1 или несколько параметров, параметр по умолчанию, а также 0 или несколько подразделов. Каждый параметр имеет имя, тип и значение.

Три части параметра реестра всегда располагаются в определенном порядке: Имя, Тип данных, значение (например: [RegistrySizeLimit] [REG_DWORD] [0x8000000]).

В таблице, которая будет приведена ниже, содержится список типов данных, определенных и используемых Windows на сегодняшний день.

Максимальная длина имени параметра:

  • 16 383 символов для Windows Server 2003, Windows XP и Windows Vista
  • 260 символов ANSI или 16 383 символа Юникод для Windows 2000
  • 255 символов для Windows 95, Windows 98 и Windows Millennium Edition

Значения большого размера (больше 2048 байт) хранятся во внешних файлах, а в реестр заносится имя такого файла. Это способствует повышению эффективности использования реестра.

Максимальный размер параметра:

  • Вся доступная память для Windows NT 4.0/Windows 2000/Windows XP/Windows Server 2003/Windows Vista
  • 16 300 байт для Windows 95, Windows 98 и Windows Millennium Edition

Ниже приводится назначение этих параметров.

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

Данные, не имеющие определенного типа. Такие данные записываются в реестр системой или приложением. В окне редактора реестра отображаются в виде двоичного параметра в шестнадцатеричном формате

  1. Редактор реестра
  2. Удаление файла из реестра с помощью Reg Organizer
  3. Что такое системный реестр Windows?
  4. Работа с reg-файлами в Reg Organizer
  5. Отправка данных чистки реестра на анализ

Типы значений реестра

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

В файле заголовка определены следующие типы значений winnt.h реестра:

Значение Тип
REG_BINARY Двоичные данные в любой форме.
REG_DWORD 32-разрядное число.
REG_DWORD_LITTLE_ENDIAN 32-разрядное число в малобайтовом формате. Windows предназначена для работы в архитектурах компьютеров с маленьким байтом. Таким образом, это значение определяется как REG_DWORD в файлах заголовков Windows.
REG_DWORD_BIG_ENDIAN 32-разрядное число в формате big-endian. Некоторые системы UNIX поддерживают архитектуры big-endian.
REG_EXPAND_SZ Строка, завершающаяся нулевым значением, которая содержит нерасширенные ссылки на переменные среды, например %PATH%. Это строка Юникода или ANSI в зависимости от того, используете ли вы функции Юникод или ANSI. Чтобы развернуть ссылки на переменные среды, используйте функцию ExpandEnvironmentStrings .
REG_LINK Строка Юникода, завершающаяся null, которая содержит целевой путь символьной ссылки, созданной путем вызова функции RegCreateKeyEx с REG_OPTION_CREATE_LINK.
REG_MULTI_SZ Последовательность строк, заканчивающихся значением NULL, которая завершается пустой строкой ( \0 ). Ниже приведен пример: String1\0String2\0String3\0LastString\0\0 . Первый \0 завершает первую строку, второй — с последней \0 строки, а последний \0 завершает последовательность. Обратите внимание, что конечный признак конца должен быть учтен в длине строки.
REG_NONE Нет определенного типа значения.
REG_QWORD 64-разрядное число.
REG_QWORD_LITTLE_ENDIAN 64-разрядное число в малобайтовом формате. 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 Строка с нулевым символом в конце. It’s either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI functions.

Строковые значения

Если данные имеют REG_SZ тип , REG_MULTI_SZ или REG_EXPAND_SZ , возможно, строка не была сохранена с соответствующими завершающим символами NULL. Поэтому при чтении строки из реестра необходимо убедиться, что строка правильно завершена, прежде чем использовать ее; в противном случае он может перезаписать буфер. Обратите внимание, что REG_MULTI_SZ строки должны содержать два завершающих null символа.

При записи строки в реестр необходимо указать длину строки, включая завершающий символ NULL ( \0 ). Распространенной ошибкой является использование strlen функции для определения длины строки, но при этом забывается, что strlen возвращает только количество символов в строке, не считая завершающего значения NULL. Поэтому следует вычислить длину строки с помощью strlen(string) + 1

Строка REG_MULTI_SZ заканчивается строкой длиной 0. Таким образом, невозможно включить в последовательность строку нулевой длины. Пустая последовательность определяется следующим образом: \0 .

В следующем примере показано пошаговое выполнение REG_MULTI_SZ строки.

#include #include #include void SampleSzz(PTSTR pszz) < _tprintf(_TEXT("\tBegin multi-sz string\n")); while (*pszz) < _tprintf(_TEXT("\t\t%s\n"), pszz); pszz = pszz + _tcslen(pszz) + 1; >_tprintf(_TEXT("\tEnd multi-sz\n")); > int __cdecl main(int argc, char **argv) < // Because the compiler adds a \0 at the end of quoted strings, // there are two \0 terminators at the end. _tprintf(_TEXT("Conventional multi-sz string:\n")); SampleSzz(_TEXT("String1\0String2\0String3\0LastString\0")); _tprintf(_TEXT("\nTest case with no strings:\n")); SampleSzz(_TEXT("")); return 0; >

Форматы байтов

В малобайтовом формате многобайтовое значение хранится в памяти от наименьшего байта ( маленького конца) до самого высокого байта. Например, значение 0x12345678 хранится как 0x78 0x56 0x34 0x12 в формате с маленьким байтом.

В формате big-endian многобайтовое значение хранится в памяти от самого высокого байта ( большого конца) до самого низкого байта. Например, значение 0x12345678 хранится в 0x12 0x34 0x56 0x78 формате big-endian.

Эти термины являются беззаботными культурными ссылками на сатирический роман Джонатана Свифта «Путешествия Гулливера».

Обратная связь

Были ли сведения на этой странице полезными?

Reg sz в реестре что это

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

Windows определяет несколько корневых разделов:

  • HKCU (HKEY_CURRENT_USER) — раздел настроек текущего пользователя. Хранится в файле NTUSER.DAT в профиле пользователя.
  • HKLM (HKEY_LOCAL_MACHINE) — раздел настроек локального компьютера.
  • HKCR (HKEY_CLASSES_ROOT) — раздел классов и типов файлов. Здесь располагаются описания зарегистрированных типов файлов, расширений оболочки, классов автоматизации COM.
  • HKU (HKEY_USERS) — раздел, в котором искусственно объединены HKCU-разделы всех пользователей, профили которых загружены в данный момент.
  • HKCC (HKEY_CURRENT_CONFIG).

В отличие от файловой системы, при работе с реестром необходимо указывать полный путь, начиная от корневого раздела, например:

«HKCU\Software\Polak Computer System\Atol System Base\V32\Settings\MILK\WindowPos»

Разрешается употреблять только «короткое» имя корневого раздела (HKCU, а не HKEY_CURRENT_USER).

Параметры реестра могут иметь разные (предопределенные Windows) типы значений. Поддерживаются следующие типы параметров реестра:

  • «REG_SZ» — строка;
  • «REG_EXPAND_SZ» — строка, содержащая параметры окружения (например %PATH%);
  • «REG_BINARY» — двоичное данное произвольной длины;
  • «REG_DWORD» — целое число размером 4 байта;
  • «REG_DWORD_LITTLE_ENDIAN» — синоним «REG_DWORD»;
  • «REG_DWORD_BIG_ENDIAN» — целое число размером 4 байта, причем байты расположены, начиная со старшего.

Следующие типы параметров реестра не поддерживаются. Разрешается узнать тип такого параметра или удалить его, но при попытке чтения или записи будет выброшено исключение.

  • «REG_LINK» — Unicode symbolic link;
  • «REG_MULTI_SZ» — массив строк;
  • «REG_RESOURCE_LIST» — список ресурсов драйвера устройства;
  • «REG_FULL_RESOURCE_DESCRIPTOR» — дескриптор ресурса драйвера устройства;
  • «REG_RESOURCE_REQUIREMENTS_LIST» — ?;
  • «REG_QWORD» — целое число размером 8 байт;
  • «REG_QWORD_LITTLE_ENDIAN» — синоним «REG_QWORD».

Подавляющее большинство параметров реестра — трех типов: «REG_SZ», «REG_DWORD» и «REG_BINARY», преобладают строковые параметры.

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

Функция Reg.BuildPath предназначена для склейки реестрового пути из двух частей. Процедура Reg.Delete применяется для удаления параметра или раздела реестра. Функция Reg.Read может использоваться как для проверки существования раздела или параметра, так и для чтения значения параметра. Процедура Reg.Write используется для создания раздела или параметра реестра.

Реестр 64-битной ОС

Под 64-битными ОС часть разделов реестра (например «HKCU\Software» и «HKLM\Software») являются двойными, для 64-битных программ по умолчанию используется 64-битный раздел, для 32-битных программ — по умолчанию 32-битный раздел. Набор констант Reg.Redirect64 позволяет явно выбрать 32-битный или 64-битный раздел.

Для проверки значений параметров реестра в 64-битных ОС следует использовать соответствующий regedit: 64-битный regedit.exe находится в папке «\Windows», 32-битный — в папке «\Windows\SysWOW64».

Кроме того, в 64-битном regedit 32-битные разделы видны, например 32-битный «HKLM\Software» виден в ветке «HKLM\Software\Wow6432Node». В 32-битном regedit 64-битные разделы не видны.

Reg sz в реестре что это

Типы данных и правила названия ключей и параметров.

Редактор реестра понимает пять типов данных:

  • REG_SZ — строковые (текстовые) параметры, содержат текст заключенный в кавычки, например «Это текстовый параметр». Пустой текстовый параметр отображается в виде «»;
  • REG_BINARY — двоичный параметр, это числа представленные в виде последовательности байтов, например 00 08 10 21, параметр должен иметь как минимум 4 байта (32 бита). пустой параметр отображается в редакторе реестра как двоичное значение нуля.
  • REG_DWORD — представляют особый тип двоичных данных. Параметры REG_DWORD очень длинны, и представляются в сокращенной шеснадцатиричной форме. Сокращение DWORD расшифровывается как Double WORD (двойное слово) (WORD (слово) — это 4 байта в 32 разрядных системах). По умолчанию редактор реестра назначает нулевое значение параметру REG_DWORD — 0х0000000 (0). Единица будет выглядеть следующим образом 0х0000001 (1). Диапазон значений 0х0000000 — FxFFFFFFF или 0 — 4 294 967 295.
  • REG_EXPAND_SZ — расширенная текстовая строка, содержащая переменную, например %systemroot%. (Поддерживается только Regedit32.exe)
  • REG_MULTI_SZ — Многострочный параметр (multiple line string) (Поддерживается только Regedit32.exe)

Значение параметра не может превышать 16 Кб, поэтому вы не найдете в реестре слишком длинных строк или данных. Общий размер подключа также неможет превышать 64 Кб (для Windows 95), в Windows 98 — ключ может содержать более 64 Кб данных Значение параметра занимающего более 16Кб, следует помещать в отдельный файл, а в реестр записывать ссылку на этот файл в качестве параметра.

В названиях ключей и параметров разрешается использовать цифры от 0 до 9, буквы от a до z, символ подчеркивания (_) и пробелы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *