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-битное программное обеспечение с трудом удается совместить с 32-битным; это вызывает необходимость существования двух реестров, чтобы эти биты находились подальше друг от друга. Поскольку иметь два независимых реестра непрактично, разделяются лишь некоторые разделы и ветви. Сопоставления типов файлов, например, общие для обоих слоев2, поэтому вы можете один раз связать .txt-документы с любимым текстовым редактором, и эти связи будут работать и в 32-битной, и в 64-битной версиях Windows.
Но в то же время 64-битная программа не может обратиться к 32-битной DLL. Часть реестра, управляющая DLL и другими компонентами, будет для каждого слоя Windows отдельной. Таким образом, например, 64-битные версии Проводника и Internet Explorer недоступны для 32-битных DLL, и наоборот.