Приложение, которое прописывает параметр в реестре, учитывает его тип и назначение. Не существует четких правил, ограничивающих выбор типа или имени параметра. Программист для сохранения собственных рекордов в какой-нибудь игре может выбрать двоичную переменную и дать ей название 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-битное программное обеспечение с трудом удается совместить с 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_ROOT\Wow6432Node3
HKEY_CURRENT_USER\Software\Wow6432Node
HKEY_L0CAL_MACHINE\S0FTWARE\Wow6432Node