Ча

We use cookies. Read the Privacy and Cookie Policy

MULTI SZ,

_I ?

О Двоичные значения

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

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

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

Редактор реестра предлагает и альтернативную программу для просмотра двоичного кода (рис. 3.5). Просто выберите любое значение и в меню Вид (View) укажите Вывод двоичных данных. Жаль, что нельзя использовать это окно для редактирования значений, так как оно шире, чем стандартное окно редактора двоичного кода и предлагает четыре разных варианта для просмотра.

О Параметр DWORD

DWORD — это всего лишь число. Достаточно часто смысл параметра DWORD легко понять: например, 0 — это -«нет», 1 — это «да», а 161 — количество секунд, которое потребовалось для решения судоку. Параметр DWORD подходит для случаев, когда можно использовать только числа, в отличие от строковых и двоичных параметров, которые могут содержать все, что угодно.

В редакторе параметра DWORD (рис. 3.6) можно выбрать основание системы счисления (вспомните школьную математику). Например, число 64 в шестнадцатеричной системе равно 100 в десятичной.

Кмиспне п*рлмс гра -QWORD i/S-i бит^) ' Цармгр- ilrtsrfiecfi РЦЬе всзач» ксчсдокч , tOfSф U]*cm4au*Yf?«f*<a4 О J3eegHr»4*e [ (Ж ] J СНтчыа J * Рис. 3.6. Значения DWORD — это просто числа, но они могут бьггь представлены как в десятичной, так и в шестнадцатеричной системах счисления

f‘V I Выбрав неправильную систему счисления, вы можете указать неправильное ^ значение параметра.

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

Система Windows также поддерживает значение QWORD, что практически то же самое, что DWORD, только с большей вместительностью. Подробнее об этом см. далее врезку «Когда число — это не только число».

Приложение, которое прописывает параметр в реестре, учитывает его тип и назначение. Не существует четких правил, ограничивающих выбор типа или имени параметра. Программист для сохранения собственных рекордов в какой-нибудь игре может выбрать двоичную переменную и дать ей название High Scores или использовать строковую переменную с названием Lard Lad Donuts. Все, что вам нужно сделать в роли «хакера» реестра, — это использовать значения в таком формате, в котором их ожидает получить конкретное приложение.

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

КОГДА ЧИСЛО - ЭТО НЕ только число

Иногда числа, хранящиеся в DWORD, состоят из нескольких частей, связанных логической арифметикой.

DWORD — «двойное слово», то есть оно гложет содержать два 16-битных значения. 16-битное значение — это целое число, хранящееся в 16 битах, что означает, оно не может быть больше, чем 2‘6, или 65 536. Таким образом, значение DWORD может использоваться для хранения двух таких чисел или одного 32-битного числа (не больше 232 или 4 294 967 296) или даже тридцати двух 1-битных двоичных чисел (каждое из которых может принимать значение 1 или 0).

Система Windows 7 поддерживает и 64-битное значение QWORD, которое доступно даже при использовании 32-битной версии. 64-битный QWORD — это учетверенный WORD, который равен двум DWORD и может содержать шестьдесят четыре 1-битных значения, четыре 16-битных значения, два 32-битных или одно 64-битное значение (которое может быть до 2W, или 18 446 774 073 709 600 000).

Может быть, у вас сейчас возник вопрос, как же это знание может помочь в жизни.

Но оно и не может помочь. Фактически оно, возможно, только все ухудшит. Но оно будет бесценно, если вы наткнетесь на значение DWORD, которое составлено из более мелких компонентов. Например, вы зеркально отображаете переключатель в каком-либо приложении и видите, что значение DWORD меняется с 16 на 8. Вы обнаружили то, что вышеуказанный переключатель хранится в этом значении как 4-битный (первый — 1, второй — 2, третий — 4). (Если это непонятно, то посмотрите в Википедии «Двоичная система исчисления» для того, чтобы разобраться в этом понятии.)

Чтобы вас еще больше запутать, есть еще одна разновидность значения DWORD — BIGENDIAN (REG_DWORD_BIGENDIAN). Это практически то же самое, что и обычный 32-битный DWORD, за исключением того, что два 16-битных слова хранятся в противоположном порядке (большее слово идет первым). Такое случается редко. Но у вас могут быть неприятности, если вы замените одно из слов обычным значением DWORD.

Системный реестр в 64-битной версии Windows

Проблема в том, что 64-битное программное обеспечение с трудом удается совместить с 32-битным; это вызывает необходимость существования двух реестров, чтобы эти биты находились подальше друг от друга. Поскольку иметь два независимых реестра непрактично, разделяются лишь некоторые разделы и ветви. Сопоставления типов файлов, например, общие для обоих слоев2, поэтому вы можете один раз связать .txt-документы с любимым текстовым редактором, и эти связи будут работать и в 32-битной, и в 64-битной версиях Windows.

Но в то же время 64-битная программа не может обратиться к 32-битной DLL. Часть реестра, управляющая DLL и другими компонентами, будет для каждого слоя Windows отдельной. Таким образом, например, 64-битные версии Проводника и Internet Explorer недоступны для 32-битных DLL, и наоборот.

#*V Из-за такого разделения классов программного обеспечения приходится запускать

32-битную версию Проводника, если вы хотите использовать дополнения кон-j ? текстного меню, или вы будете вынуждены использовать только родные 64-битные *?' дополнения контекстного меню для работы с 64-битной версией Проводника,

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

Редактор реестра включает специальную ветвь Wow6432Node, позволяющую получить доступ к 32-битным записям из того же окна, что и к 64-битным. В Windows 7 по умолчанию существует три таких «узла»:

НК EY_C LASS ES_ROOTWow6432Node3

HKEY_CURRENT_USERSoftwareWow6432Node

HKEY_L0CAL_MACHINES0FTWAREWow6432Node

Например, вы захотели изменить настройки реестра для Adobe Photoshop. Для 64-битной версии Photoshop вы перейдете к

HKEY_CURRENT_USERSoftwareAdobePhotoshop

а для 32-битной версии — к ветви

HKEY_CURRENT_USERSoftwareWow6432NodeAdobePhotoshop

Так как 32- и 64-битные классы (компоненты программного обеспечения) не являются взаимосочетаемыми, то 64-битные классы регистрируются в ветви

HKEY_CLASSES_ROOTCLSID{class_id}

а 32-битные классы — в ветви

HKEY_CLASSES_R00TWow6432NodeCLSID{class_id)

Можно использовать и 32-битную версию редактора реестра (%systemroot% syswow64 egedit.exe), хотя много пользы вы из этого не извлечете. При запуске regedit.exe добавьте параметр командной строки -т, тогда 32-битная и 64-битная версии редактора откроются одновременно.