Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

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


Другие наши рассылки:
  • Новости IT-мира: Ежедневно ссылки на новые новости и статьи популярных компьютерных сайтов.
  • Рецензии на новые книги: Описание новых книг о компьютерах, дизайне, бухгалтерии, психологии и др. направлениях мысли человечества.
  • Новости нашего сайта: Ежедневно ссылки на новые материалы, поступающие на наш сайт: от ссылок на статьи до ссылок на новые и обновленные записи онлайновых баз данных.

Данная статья была написана для журнала Мой компьютер.

Мы продолжаем цикл статей о работе с операционной системой Windows Vista. Предыдущая статья данного цикла была последней из серии обзорных статей по основным нововведениям Windows Vista. Сегодняшняя же статья начинает новую серию из цикла, посвященную описанию работы с различными системными компонентами Windows Vista. Например, реестром, групповыми политиками, службами и т.д. Сведения из данной серии статей понадобятся нам в будущем: в самой последней и самой большой серии данного цикла статей, посвященной работе и настройке отдельных возможностей Windows Vista.

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

  • Добавились новые файлы кустов.
  • Программа reg.exe поддерживает новые возможности.
  • Программа regini.exe теперь входит в стандартную поставку операционной системы.
Что такое реестр

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

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

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

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

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

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

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

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

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

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

Ветвь реестра имеет следующий формат: корневой раздел реестра\подраздел\подраздел\...\конечный подраздел. Например, если сказано, что определенный параметр находится в ветви реестра HKCU\Control Panel\Desktop (рисунок 1), значит он находится в подразделе Desktop, который находится в подразделе Control Panel. А вот подраздел Control Panel находится в корневом разделе HKEY_CURRENT_USER.

Рисунок 1

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

Корневой раздел — это всего-навсего подраздел реестра, выше которого ничего нет. Также его можно назвать системным подразделом, удалить или переименовать который нельзя, и в котором содержатся другие подразделы реестра. В операционной системе 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.

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

Корневые разделы HKCU, HKU, HKLM

Возможно, вы уже заметили, что в данной статье описаны одни корневые разделы, а все ветви реестра, представленные в ней же, начинаются с совершенно непонятных корневых разделов HKCU, HKU или HKLM. На самом деле это не корневые разделы, а лишь их общепринятые сокращения. Так:

  • HKCU является сокращением от названия корневого раздела HKEY_CURRENT_USER;
  • HKU является сокращением от названия корневого раздела HKEY_USER;
  • HKLM является сокращением от названия корневого раздела HKEY_LOCAL_MACHINE.
Типы параметров реестра

В зависимости от информации, которую можно хранить в параметре реестра, он может быть нескольких типов.

Независимо от типа параметра, операционная система налагает на него ограничение в максимальном размере. Если параметр содержит значение в формате 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.
Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=122

В избранное