Книга: Недокументированные и малоизвестные возможности Windows XP
Статические параметры
Статические параметры
Информация о текущей версии Windows находится в двух статических параметрах реестра и одном динамическом. Для начала поговорим о статических параметрах — они находятся в ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlProductOptions. Это параметры ProductType и ProductSuite.
? ProductType — параметр REG_SZ-типа. Определяет само направление данной версии Windows: то ли она предназначена для рабочих компьютеров, то ли для серверов, то ли для контроллеров домена. В зависимости от назначения Windows параметр может принимать следующие значения:
• WinNT — данная версия системы Windows является рабочей станцией (Windows XP Professional, Windows XP Home Edition);
• LanmanNT — версия Windows является контроллером домена;
• ServerNT — данная версия Windows является сервером.
ПРИМЕЧАНИЕ
Вот что пишет об этом параметре сама Microsoft: «Свойство ProductType представляет дополнительные сведения о компьютере. Возможны следующие значения: n1 — Рабочая станция, n2 — Контроллер домена, n3 — Сервер».
? ProductSuite — параметр REG_MULTI_SZ-типа. Определяет дополнительную градацию Windows и может принимать следующие значения:
• Blade — определяет версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• Personal — данная версия Windows принадлежит к линейке Home Editions;
• DataCenter — определяет версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• EmbeddedNT — указывает разновидность Windows Embedded;
• Terminal Server — определяет версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• Small Business (Restricted) — указывает версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• BackOffice — определяет версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• CommunicationServer — указывает версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• Enterprise — определяет версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• Small Business — указывает версию Windows для Windows 2003 Server, поэтому в книге не рассматривается;
• ConcurrentLimit — определяет версию Windows для Windows 2003 Server, поэтому в книге не рассматривается.
ПРИМЕЧАНИЕ
Об этом параметре Microsoft пишет: «Свойство ProductSuite содержит информацию об установленных и лицензированных дополнениях к операционной системе».
Как видите, мир Windows разнообразен, а теперь подумаем, что можно сделать с приведенной здесь информацией. А сделать можно лишь одно — преобразовать одну версию Windows в другую, что в некоторых кругах еще называется форсажем. К сожалению, значение параметра ProductType Windows изменить не разрешит — это грубое нарушение лицензионных прав на вашу версию операционной системы (именно такое сообщение выводит система на «синем экране смерти» после изменения значения параметра ProductType). Но с некоторыми поправками можно изменить значение параметра ProductSuite.
ВНИМАНИЕ
Данные сведения приведены лишь в ознакомительных целях. Любое изменение версии Windows является нарушением прав на данный продукт и может не только вывести вашу систему из строя, но и автоматически сделать вашу лицензионную версию в глазах корпорации Microsoft пиратской, после чего вы не сможете пользоваться такими функциями, как Windows Update.
Для примера преобразуем Windows XP Home Editions в Windows XP Professional. После этого вы получите такие новые функции, как возможность управления операционной системой с помощью mstsc (удаленное управление Рабочим столом), а также возможность установки операционной системы в качестве контроллера домена.
Итак, если посмотреть на описанные выше значения для параметра ProductSuite, то можно заметить, что для Windows XP Home Editions это значение должно быть равно Personal. Это действительно так, но какое значение параметра должно быть для Windows XP Professional, ведь в приведенном описании этого значения нет? Все дело в том, что для Windows XP Professional значение параметра ProductSuite должно отсутствовать.
Если вы уже попробовали изменить значение параметра ProductSuite, то, без сомнения, знаете, что операционная система не даст это сделать. Будет выведено сообщение о нарушении прав лицензионного продукта, после чего предыдущее значение вернется на свое место (оно вернется даже тогда, когда это значение явно не соответствует ни одному из приведенных выше значений). Поэтому простым способом редактирования параметра вы ничего не добьетесь.
Вспомним о ветви реестра HKEY_LOCAL_MACHINESYSTEM все, что было написано в предыдущих частях книги. Итак, ветвь HKEY_LOCAL_MACHINESYSTEM хранит все сведения о драйверах и службах, зарегистрированных в системе. Она также хранит наиболее важную информацию о конфигурации операционной системы — если содержимое ветви HKEY_LOCAL_MACHINESYSTEM будет повреждено, то с большой долей вероятности вы не сможете загрузить операционную систему. Но ведь ошибки могут происходить не только по вине пользователя, но и по вине сторонних программ или самой операционной системы — это уже очень большая группа риска, а по теории вероятности, чем больше факторов риска, тем больше вероятность, что непредвиденное событие все-таки произойдет. Именно поэтому программистами Microsoft для страховки было решено продублировать всю критически важную информацию в нескольких ветвях реестра — так появились ветви реестра HKEY_LOCAL_MACHINESYSTEMControlSet001, HKEY_LOCAL_MACHINESYSTEMControlSet002 и т.д. Каждая из этих ветвей хранит конфигурацию системы в разные моменты времени, а ветвь реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSet является лишь ссылкой на один из приведенных разделов реестра Windows.
Теперь можно поставить еще один вопрос — если запрещено изменять параметр в ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSet, то будет ли также запрещено изменять значение того же параметра в ветвях реестра HKEY_LOCAL_MACHINESYSTEMControlSetNNN? Оказывается, что значения параметров данных ветвей совершенно не защищены от изменений и Windows позволяет редактировать любые параметры, даже те, которые запрещено редактировать в разделе CurrentControlSet.
Осталось вспомнить еще одно — как же Windows выбирает, какой из разделов ControlSetNNN нужно использовать при следующей загрузке компьютера. Для этого применяются значения параметров DWORD-типа из ветви системного реестра HKEY_LOCAL_MACHINESYSTEMSelect. Эта ветвь может содержать следующие параметры.
? Default — именно этот параметр определяет, какая копия раздела ControlSet будет загружена при нормальной загрузке системы. Например, если его значение равно 2, то при обычной загрузке системы раздел CurrentControlSet будет ссылкой на содержимое раздела ControlSet002.
? Current — определяет номер текущей копии раздела ControlSet, на которую ссылается раздел CurrentControlSet.
? LastKnownGood — указывает номер копии раздела ControlSet, которая будет использоваться для построения содержимого раздела CurrentControlSet при использовании команды меню альтернативной загрузки Загрузка последней удачной конфигурации.
? Failed — определяет раздел ControlSet, при предыдущей загрузке которого произошел какой-то сбой и загрузка была прервана.
Когда известно, какой из разделов ControlSet для какой загрузки предназначен, возникает еще один вопрос — а значения какого из них правильнее и лучше всего редактировать? Здесь автор может посоветовать лишь исходя из своего опыта — лучше всего редактировать значения параметров из раздела, ссылка на который указана в значении параметра LastKnownGood, а потом пробовать запустить систему с помощью команды альтернативного окна загрузки Загрузка последней удачной конфигурации. Есть большая доля вероятности, что после редактирования параметров ваша операционная система не загрузится, и тогда вы просто сможете загрузить ее в обычном режиме. Причем все дело в том, что в большинстве случаев операционная система не загружается уже после регистрации в ней пользователя — требует ввода нового активационного ключа. Из предыдущих глав книги вы знаете, что, как только в системе регистрируется пользователь, ветвь реестра ControlSet, с помощью которой была выполнена загрузка, считается корректной и ссылка на нее указывается в качестве значения параметра LastKnownGood. Другими словами, если вы использовали ветвь ControlSet, описываемую в параметре Default, то при таком стечении обстоятельств окажется поврежденной как текущая конфигурация ControlSet, так и конфигурация, на которую будет ссылаться значение параметра LastKnownGood.
Вот и все. Теперь вы можете попытаться изменить версию своей операционной системы, но хотелось бы еще раз напомнить, что это является незаконным предприятием и рассказ о нем приведен лишь в ознакомительных целях.