Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Реестр Windows Vista. Основные сведения о реестре - 2


Уважаемые подписчики, на нашем сайте появился новый раздел — Задать вопрос (http://onestyle.com.ua/q.php). Если у вас есть вопросы по работе с операционной системой Windows, вы можете задать их нам и нашим посетителям. Быть может, мы сможем помочь вам решить возникшие проблемы.

Новости нашего сайта:

Продолжение, начало в выпусках: 1

В конец записи

Книга "Реестр Windows Vista. На 100%", Глава 1. Основные сведения о реестре, Часть 2. Что такое реестр: ветви и типы параметров.

Корневые разделы и ветви реестра

Как было сказано выше, каждый файл куста содержит в себе определенную ветвь реестра. Но что же представляет собой ветвь реестра?

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

Параметр реестра

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

Подраздел реестра

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

Ветвь реестра

А ветвь реестра представляет собой путь к определенной части реестра, который состоит из последовательности подразделов, которые нужно открыть, чтобы добраться до конечного подраздела в ветви реестра.

Ветвь реестра имеет следующий формат: «корневой раздел реестра»\«подраздел»\«подраздел»\«…»\«конечный подраздел».

Например, если сказано, что определенный параметр находится в ветви реестра HKCU\Control Panel\Desktop, значит он находится в подразделе Desktop, который находится в подразделе Control Panel. А вот подраздел Control Panel находится в корневом разделе HKEY_CURRENT_USER.

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

Возникает законный вопрос — а что такое корневой раздел?

Корневой раздел

Корневой раздел — это всего-навсего подраздел реестра, выше которого ничего нет. Также его можно назвать системным подразделом, удалить или переименовать который нельзя, и в котором содержатся другие подразделы реестра.

В операционной системе Windows Vista реестр состоит из пяти корневых разделов.

HKEY_CLASSES_ROOT

Данный корневой раздел содержит в себе всю информацию о зарегистрированных в операционной системе типах расширений файлов, а также о содержимом их контекстного меню, диалога СВОЙСТВА, значке файла и многом другом. Кроме того, содержимое данного корневого раздела хранит описание всех зарегистрированных в операционной системе ActiveX-объектов.

Фактически, корневой раздел HKEY_CLASSES_ROOT не существует в реестре. Данный корневой раздел является ссылкой на содержимое двух других ветвей реестра: ветвей HKLM\SOFTWARE\Classes и HKCU\Software\Classes. При этом данные, содержащиеся в ветви реестра HKCU\Software\Classes, заменяют собой данные из ветви реестра HKLM\SOFTWARE\Classes.

Не имеет никакой разницы, содержимое какой ветви реестра редактировать. Любые изменения, которые будут внесены в ветви реестра HKLM\SOFTWARE\Classes или HKCU\Software\Classes, будут сразу же отображаться и в корневом разделе HKEY_CLASSES_ROOT. Если же вы изменяете содержимое корневого раздела HKEY_CLASSES_ROOT, то фактически вы изменяете содержимое ветви реестра HKLM\SOFTWARE\Classes.

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

HKEY_CURRENT_USER

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

Как и корневой раздел HKEY_CLASSES_ROOT, данный корневой раздел физически отсутствует в реестре. Он является лишь ссылкой на ветвь реестра HKEY_USERS\«SID учетной записи пользователя».

Практически все содержимое данного корневого раздела могут редактировать не только администраторы, но и пользователь, которому принадлежит профиль. Исключение составляют только настройки ограничений в ветвях реестра, используемых групповыми политиками (ветви реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Policies и HKCU\Software\Policies), а также ветвь реестра HKCU\Software\Microsoft\Protected Storage System Provider, в которой почтовый клиент Windows Mail хранит пароли своих пользователей. Данные ветви реестра доступны только администраторам.

HKEY_LOCAL_MACHINE

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

Многие параметры, которые хранятся в подразделах ветви реестра HKLM\SOFTWARE\Microsoft данного корневого раздела, могут дублироваться в ветви HKCU\SOFTWARE\Microsoft. Как правило, в этих случаях операционная система будет использовать значения из корневого раздела HKEY_CURRENT_USER, так как они относятся к настройкам конкретного пользователя.

Большую часть содержимого данного корневого раздела могут редактировать только администраторы. Хотя некоторые настройки могут быть доступны и обычным пользователям.

HKEY_USERS

Данный корневой раздел содержит в себе все профили пользователей, которые загружены операционной системой в данный момент. Также в данном корневом разделе содержатся загруженные классы пользователей.

Данный корневой раздел разрешено редактировать только администратору и учетной записи локальной системы.

HKEY_CURRENT_CONFIG

Как и корневые разделы HKEY_CLASSES_ROOT и HKEY_CURRENT_USER, данный корневой раздел физически не существует в реестре. Он является ссылкой на ветвь реестра HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current.

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

Типы параметров реестра

В зависимости от информации, которую можно хранить в параметре реестра, он может быть нескольких типов. При этом, не зависимо от типа параметра, операционная система налагает на него ограничение в максимальном размере. Если параметр содержит значение в формате ASCII, он не может содержать более 260 символов. Если же параметр содержит значение в формате Unicode, то максимальное количество символов для данного параметра равно 16 383. Как правило, основные параметры реестра, создаваемые при инсталляции операционной системы, имеют формат Unicode.

Кодировка Unicode является 16-битным стандартом (на один символ выделяется 2 байта, тогда как в кодировке ASCII выделяется только 1 байт), что обеспечивает возможность хранения 65536 уникальных символов

Ниже мы перечислим все типы параметров, которые могут находиться в реестре операционной системы Windows Vista.

Тип REG_BINARY

Параметры данного типа содержат в себе последовательность двоичных данных, которые в реестре хранятся в шестнадцатеричном формате.

Например, многие параметры, содержащие в себе сведения о настройках аппаратной части компьютера, имеют этот тип.

Как правило, если размер значения параметра типа REG_BINARY не больше 4 байт, его можно безболезненно заменить на параметр, имеющий тип REG_DWORD. Однако при этом не следует забывать, что значения параметров типа REG_DWORD хранятся в противоположном порядке, чем значения параметров типа REG_BINARY. Например, если значение параметра типа REG_BINARY равно 12 34 56 78, то аналогичное значение в параметре типа REG_DWORD будет равно 0x78563412. Доказательство данного утверждения можно легко увидеть при помощи редактора реестра regedit.exe, о котором будет рассказано далее в этой книге.

Тип REG_DWORD

Параметры данного типа содержат в себе двоичные данные, длина которых составляет 4 байта.

Большинство параметров реестра числового типа имеют именно этот тип.

Как уже было сказано выше, параметры типа REG_DWORD отличаются от параметров типа REG_BINARY не только максимальной длиной параметра (для REG_BINARY длина неограниченна, а для REG_DWORD — четыре байта), но и порядком хранения этих данных в памяти.

Разновидностью параметров типа REG_DWORD являются параметры типов REG_DWORD_LITTLE_ENDIAN и REG_DWORD_BIG_ENDIAN. Отличие данных параметров от параметра REG_DWORD и от самих себя, только в одном. Если параметр REG_DWORD_LITTLE_ENDIAN хранит самый младший байт своего значения на первом месте в памяти, то параметр REG_DWORD_BIG_ENDIAN хранит младший байт на последнем месте в памяти.

Тип REG_QWORD

Параметры данного типа содержат в себе двоичные данные, длина которых составляет 8 байт. Во всем остальном параметры данного типа аналогичны параметрам типа REG_DWORD.

Тип REG_EXPAND_SZ

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

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

  • %systemroot%. Заменяется путем к каталогу Windows.
  • %windir%. Заменяется путем к каталогу Windows.
  • %systemdrive%. Заменяется буквой системного диска (диск, на котором расположен каталог Windows).
  • %userprofile%. Заменяется путем к каталогу профиля текущего пользователя.
  • %username%. Заменяется именем текущего профиля.
  • %computername%. Заменяется именем компьютера.
  • %programfiles%. Заменяется путем к каталогу, в который по умолчанию устанавливаются программы.

Также в параметрах данного типа вы можете использовать все переменные, которые описаны в диалоге ПЕРЕМЕННЫЕ СРЕДЫ. Данный диалог можно вызвать при помощи команды rundll32.exe sysdm.cpl, EditEnvironmentVariables, либо при помощи кнопки ПЕРЕМЕННЫЕ СРЕДЫ, расположенной на вкладке ДОПОЛНИТЕЛЬНО диалога СВОЙСТВА: СИСТЕМА.

В параметрах данного типа может находиться только одна строчка текста.

Тип REG_MULTI_SZ

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

Тип REG_SZ

Параметры данного типа представляют собой обычные строковые параметры. Они не могут содержать в своем составе переменных (переменные интерпретируются как обычный текст). И в параметрах данного типа может находиться только одна строчка текста.

Тип REG_RESOURCE_LIST Параметры данного типа хранят в себе последовательность вложенных массивов в двоичном виде, и служат для хранения списка ресурсов.

Например, параметры данного типа можно встретить в подразделах ветви реестра HKLM\HARDWARE\RESOURCEMAP. Дочерние подразделы данной ветви реестра не содержат параметров других типов, кроме параметров типа REG_RESOURCE_LIST и REG_RESOURCE_REQUIREMENTS_LIST.

Тип REG_RESOURCE_REQUIREMENTS_LIST

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

Например, параметры данного типа также можно встретить в подразделах ветви реестра HKLM\HARDWARE\RESOURCEMAP.

Тип REG_FULL_RESOURCE_DESCRIPTOR

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

Например, параметры данного типа также можно встретить в подразделах ветви реестра HKLM\HARDWARE\DESCRIPTION.

Тип REG_NONE

Параметры данного типа не имеют определенного двоичного или строкового типа. В редакторах реестра они отображаются в виде параметров двоичного типа.

Тип REG_LINK

Параметры данного типа представляют собой символическую ссылку в формате Unicode.

Битовая маска

Битовая маска не является типом параметра реестра. Это стандартный способ описания назначения отдельных битов параметра, имеющего тип REG_DWORD или REG_BINARY. Например, формат описания битовых масок приведен ниже.

  • 0х00000001 — описание назначения бита 1.
  • 0х00000002 — описание назначения бита 2.
  • 0х00000004 — описание назначения бита 3.
  • 0х00000008 — описание назначения бита 4.
  • 0х00000010 — описание назначения бита 5.
  • 0х00000020 — описание назначения бита 6.

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

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

Например, если перед вами будет поставлена задача установить биты параметра, которые были указаны выше в примере битовой маски, вам достаточно будет выполнить следующие арифметические операции.

  • 1+2+4+8+10+20 = 45.
  • 45 переводим в 16-ричную систему счисления = 3F.

Продолжение следует

Рейтинг: 0 
Оцените: 1 2 3 4 5
В начало записи
Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=268

В избранное