секретов WINDOWS

         

Винты отдыхают: бездисковая загрузка Windows

Идея бездисковой загрузки - это своего рода параноидальный синдром системных администраторов. Многие поколения админов, а также производителей операционных систем и "решений" вновь и вновь возвращаются к этой идее. 
Эта мания не обошла и меня - но на этот раз, в отличие от прошлых затей, я грузил через сеть самую что ни на есть Windows 2000. 
Первое и главное, с чем меня срочно нужно поздравить, это то, что все работает - и работает вполне прилично. Как говорится, не прошло и двух недель ковыряния в "железе" и документации. Фактически я прямо сейчас работаю на бездисковой станции, так что результат у меня прямо перед носом. 
А теперь расскажу, как можно повторить всю эту историю, обходя ошибки и продвигаясь прямо к цели. Попутно разучим испанские цифры до восьми включительно :-). 
Uno: выбираем железо 
Первое, что вам понадобится для бездисковой загрузки, это два компьютера (и оба - с хорошими винчестерами :-)). Вы, конечно, в шоке: ведь как раз на винте вы и хотели сэкономить - но в свое время все станет ясно. Лучше всего если эти компы будут, что называется, "нулевыми", то есть без всяких установленных осей - в противном случае ничего гарантировать не могу (я пытался устанавливать на всяких зверинцах - и безрезультатно проколбасился лишних три дня). 


Один комп будет выполнять роль сервера. Я использую не самый мощный компьютер, который, тем не менее, справляется с поставленной задачей: Duron 800, 128 Мб памяти, интегрированная материнская плата (KLE133, видео - Trident Blade 3D Promedia, LAN - ADMTek 983 10/100 Мбит). Этот сервер не имеет ни монитора, ни клавиатуры, ни мышки - точнее, они отваливаются сразу после загрузки. Управление производится удаленно через Windows Remote Desktop (о котором тоже будет написана статейка). 
Вообще говоря, BXP-сервер не является единым целым - на нем работает, как минимум, четыре компонента: сервер DHCP, сервер TFTP, сервер аутентификации и сервер виртуальных дисков. Из всех только последний предъявляет требования к мощности компьютера, выступая в роли своего рода специфического файлового сервера. Как известно, для файловых серверов критичным является объем оперативной памяти - так что это первое, что вам придется добавить, если производительность сервера вас не устраивает. Повышению производительности клиентских машин также будет способствовать более быстрая сеть: при возможности используйте гигабитную шину. И третья возможность - это разделение сегментов сети и установка дополнительных серверов виртуальных дисков, но об этом чуть позже. 
В качестве эталонной рабочей станции выступает Athlon 1700 с 1G памяти и 60 Гб винчестером, для игрищ снабженный самым распространенным GeForce 4 MX 400 с 32 Мб видеопамяти. Хочется сказать, что столько оперативной памяти вовсе не обязательно, но, поскольку загрузочный диск и swap-файл будут работать по сети, то с целью минимизации этого трафика нужно ставить 256 Мб для Windows 2000 - и никак не меньше. 
Третье устройство, также задействованное в нашей схеме, это собственный маршрутизатор. Это важно, поскольку общественный использовать для загрузки не очень выгодно: загрузка операционки и программ станет заметно замедляться. Теоретически коммутатор должен гибко коммутировать часто соединяющиеся порты - так что "висящие" параллельно, но не участвующие в процессе компьютеры не должны бы оказывать влияния на пропускную способность. Однако на практике приходилось констатировать значительную выгоду по времени на выделенном коммутаторе - видимо, не вся теория доходит до практики :-). 


Я использовал неброский, но надежный EUSSO Nway switch USH-5008 XL. У этого восьмипортового юнита три преимущества: питание 12 В, что заметно и положительно влияет на "залипание" сети по сравнению с распространенными семивольтовыми моделями. Второе - это автокросс на всех портах (то есть вы можете подключать как компьютеры, так и маршрутизаторы на любой порт любым кабелем - маршрутизатор сам распознает, кто куда подключен, и сделает все правильно). Третье, что, собственно, и убедило меня окончательно,- это хорошая цена этого юнита. 
Отдельное внимание стоит уделить сетевой карточке на машине-клиенте. Она должна поддерживать сетевую загрузку, так называемый PXE (по аналогии со SCSI=[ska-zee] и SQL=[seek-well], PXE читается [pig-zee]). Этот стандарт поддерживают сейчас все карточки, в том числе и встроенные на борту материнских плат. Я использовал недорогую и надежную Realtek RTL8139(A), которая штатно поддерживается большинством операционных систем. 
Итак, все было подключено и работало без проблем (в том смысле, что дым ниоткуда не шел) - пришла очередь выбора операционных систем. 
Dos: выбираем операционки 
Для сервера (пока) подходят только операционные системы семейства Windows, поскольку только на этой платформе работает BXP (а именно эта программа и делает бездисковую загрузку Windows возможной). 
Для установки на сервер была выбрана Windows XP Professionl SP1. Для этого было три причины: во-первых, XP имеет все драйверы для указанной материнской карточки, что, в общем, многое упрощает и целый ряд телодвижений делает ненужными. Во-вторых, XP очень хорошо перезагружается (в отличие от той же Windows 2000, с которой у меня было немало случаев "сейчас, сейчас я перезагружусь - ты только жди"). Это было важно, поскольку хотелось иметь возможность перезагружать сервер удаленно - или, по крайней мере, без подключения монитора и клавиатуры. 
Третье - и, собственно, самое главное - это Remote Desktop, то есть возможность удаленно подключаться и получать графический "shell" на удаленной машине. Если сервер всегда будет у вас под рукой и не составит труда поставить на него монитор - тогда, возможно, вы предпочтете поставить Windows 2000 и сэкономить таким образом мощность для более высокой производительности сервисов. 


Естественно, всякие 98 или Me были отброшены без всяких раздумий, поскольку ни надежность, ни управление ресурсами, в том числе сетевыми соединениями и дисковой файловой системой, не находятся у этих систем на уровне, достаточном для решения поставленных задач. 


Для эталонного клиента я выбрал Windows 2000 Professional. Собственно, было три варианта: помимо упомянутой Windows 2000, претендовали Windows XP и Windows Embedded. Первая отпала сама собой: во-первых, она потребляет в несколько раз больше ресурсов (что в масштабах целой сети умножается пропорционально количеству рабочих станций); во-вторых, ее образ в несколько раз объемней (то есть сама загрузка длится заметно дольше); и третье - я просто потерпел фиаско при запуске этой ОС, то есть при попытках загрузить образ XP система вылетала - да еще и с рядом неприятных сообщений, намекающих на скромность моих умственные способностей. 
Windows XP Embedded - во всем неплохая система, я экспериментировал с ней вполне успешно, но к ее "отставке" привели следующие три причины. Во-первых, ее генерация сама по себе - процесс трудоемкий. Так что решать проблемы сетевой загрузки и одновременно конфигурировать XPE - это несколько утомительно. Во-вторых, для работы XPE требуется инсталляция на клиентской стороне дополнительных компонент и их конфигурация, что еще более отдаляет ожидаемый результат. И в-третьих, это все-таки XP - то есть даже в урезанном варианте она может потребовать больше ресурсов, чем Windows 2000 (а уж тем более если вы захотите встроить туда такие возможности, как Internet Explorer и DOT NET). 
Дополнительная просьба: по возможности инсталлируйте клиентскую часть на чистый диск. Создайте один раздел размером до 8000 Гб. Желательно даже меньше, поскольку таков будет размер образа вашего диска на сервере и, соответственно, расход места на нем - если вы примете решение сделать виртуальные диски полноценными с внесением изменений в сам образ, то количество образов будет пропорционально количеству рабочих станций. 


Очень важно: проследите, чтобы имя эталонного диска было С:. Это жесткое требование BXP - в случае, если у вас на диске уже стоит какая-нибудь Windows NT5, она будет тянуть за собой мэппинг, так что следующая установка получит имя D: и так далее. Даже если вы и исподвывернетесь и, используя, к примеру, Partition Magic, перемэппите имена устройств (а это еще нужно придумать как) - то и в таком случае вы должны будете гарантировать, что старая инсталляция не получает управления. 
Плохая новость заключается в том, что, как по ходу выяснилось, NT5 держит только одну копию ntldr на одном физическом диске, так что все последующие инсталляции не будут устанавливать этот компонент. Короче, я вам точно говорю: ставьте клиент на чистый винчестер в первый раздел с именем C: - и все будет работать как надо. 
Также инсталлируйте на рабочую станцию все драйверы и прочие компоненты, вроде DOT NET, Media Player, Direct X и так далее: хоть это можно сделать и позже, но перед созданием загрузочного образа нелишне иметь хорошее представление о его размере. Кроме того, я наблюдал проблемы с установкой некоторых компонент на виртуальный диск: например, драйвер звуковой карточки на борту и Norton Ghost, установленные на образ, не работали - но после их установки на эталонный диск и создания нового образа все стало на свои места. 
Вообще же, если вы настроены реально эксплуатировать BXP, эталонный диск для вас должен стать предметом особой заботы: придется аккуратно спланировать, что нужно обязательно туда установить, а что можно загружать и по сети (игры, например). Это важно, поскольку: размер эталонного диска ограничен - это раз, все ваши ошибки будут реплицироваться пропорционально количеству рабочих станций - это два. 
Tres: загружаем и устанавливаем BXP 
Собственно, этот шаг можно было проделать и самым первым. BXP - это набор серверов, в своей совокупности обеспечивающих сетевую загрузку. Загрузить программу можно с сайта Venturcom (обратите внимание, что www является обязательной частью адреса). Есть и другие возможности получения данной инсталляции - этот продукт распространяет еще несколько компаний. Главное, что вас должен интересовать файл с именем bxp25.exe размером 12,6 Мб. Если на сайте Venturcom вы не можете найти нужной страницы (этот сайт постоянно и непредвиденно изменяет топологию) - просто поищите через поиск по сайту слово download.


Этот файл содержит четыре варианта инсталляции, но нас пока что будут интересовать только два из них: инсталляция сервера и инсталляция клиента. Два других варианта - это установка самостоятельного файлового сервера и установка Embedded Tools, после основной установки вы поймете, зачем они могут быть нужны, но сейчас мы не станем их рассматривать. 
Будем считать, что серверная часть BXP без проблем установлена на сервер. Но это еще не значит, что тот начал работать - на самом деле вам придется стартовать все сервисы вручную чуть позже, когда вы их сконфигурируете. 
Важно! Хоть инсталляция и не настаивает на этом явно (как это делает, например, DirectX: "оба-на! перезагрузочка", хех) - тем не менее, обязательно перезагрузите компьютер, иначе ничего не станет работать. 
Кроме прочего, не забудьте установить, как минимум, триальную лицензию. Это интерактивный процесс: вы отправляете письмо на Venturcom - и в ответ получаете от LicenseRobot@vci.com файл лицензии LicenseResponse.vlf. После установки BXP у вас появится новое устройство с именем "лицензии" и красивой красной пиктограммкой в виде щита: щелкните на ней правой кнопкой, выберите Import License и укажите на полученный от Venturcom файл. Должно сработать - на "диске" лицензий появится "каталог" с данными, соответствующими вашей лицензии. 
Quatro: настраиваем DHCP-сервер 
В набор компонент, устанавливаемых с BXP-сервером, входит DHCP-сервер - однако я его не использовал, поскольку уже располагал установленным Turbo DHCP. Кроме того, встроенный в BXP Tellurian DHCP не умеет взаимодействовать с другими серверами DHCP в одной подсети - а это как раз был мой случай. И, наконец, Tellurian настраивается через файл конфигурации, с обязательным рестартом сервиса после внесения в него изменений,- что не столько страшно, сколько утомительно. Короче: входящий в состав BXP сервер меня не устраивал и, как показало время, оказался совсем не нужным. 


Вообще, правильная настройка DHCP - это самая важная часть процесса сетевой загрузки в целом. Так что первое, чего вы должны добиться, это настроить DHCP и загрузить дискового клиента с динамической конфигурацией от этого сервера. На этом этапе в BIOS'е вашего компьютера первым пунктом должна стоять загрузка с диска - для сетевой загрузки еще не пришло время. 
Вот список опций, которые установлены на моем Turbo DHCP, помимо диапазона адресов и подсети: 

Опции, кроме -1 и -14, не имеют к сетевой загрузке прямого отношения; и, конечно же, все адреса должны быть заменены на специфические для вашей подсети. Next server должен указывать на ваш сервер, где установлен BXP и с которого будет загружаться образ VLDRMI13.bin. Настройка NBT-сервера для Windows обозначает настройки WINS. Если вы не уверены в том, как правильно настроить DHCP (чтобы не было конфликтов адресации между серверами и подобных накладок) - лучше обратитесь к системному администратору. Turbo DHCP совершенно бесплатно можно закачать с сайта.

В данной точке будем считать, что ваша рабочая станция успешно загружается, получая параметры от вашего же DHCP-сервера. Важный момент.
Cinco: настраиваем TFTP и другие сервисы BXP
После установки сервер BXP не начинает работу автоматически: вы должны сконфигурировать все сервисы и запустить их вручную. "Запустить вручную" значит зайти в Панель управления > Административные задачи > Сервисы и выполнить две операции: сначала правой кнопкой выбрать на нужном сервисе Стартовать, затем (все той же правой кнопкой) выбрать свойства и далее Тип запуска: автоматически - чтобы этот сервис стартовал при перезагрузке компьютера. Надеюсь, эта операция вам знакома и трудностей не доставит. А для тех, кто в танке, еще раз повторю: все происходит на вашем сервере.

Итак, поехали-покатились по настройкам компонент BXP. Первым настроим TFTP, то есть сервер, раздающий вашему клиенту файл начальной загрузки. Настройка производится через Control Panel - там вы должны найти пиктограму Venturcom TFTP Service. По умолчанию он не подключен ни к какому порту и не настроен ни на какой каталог. Исправляем эту ситуацию, настроив параметры следующим образом:


TFTP Options: Allow Transmit - да, Allow Receive - нет;
Transmit (GET) Directory -C:\Program Files\Venturcom\BXP\TFTPBOOT\;
TFTP Logging - без разницы, поставьте в ноль;
TFTP Network - отметьте все сетевые интерфейсы, на которых TFTP будет ожидать подключений бездисковых клиентов, и не меняйте ни в коем случае порт 69, он жестко закодирован в PXE BOOT BIOS;
About - хех, ну почитайте, что ли :-).
Альтернативно можно настроить сервис 3COM PXE. Укажите файл загрузки C:\Program Files\Venturcom\BXP\TFTPBOOT\BOOTPTAB, отключите Proxy DHCP, если сервер DHCP расположен на том же компьютере и остальные параметры можно не изменять.
Третий способ получения загрузочного образа - BOOTP - является устаревшим, так что не используйте его без крайней необходимости.
Еще два сервиса нужно настроить обязательно.
BXP Login Service Preferences - ярлык на него расположен в папке установленной программы BXP. Все, что тут нужно сделать, это отметить интерфейс, на котором данный сервис будет принимать запросы на аутентификацию. Сама база, как вы видите, это файл в формате MS Access (или, точнее, MS DBJet 3.0), на досуге можете поковырять его вьювером. Если вы хотите принимать запросы от анонимных хостов (что, в общем, может сэкономить много времени и вполне безопасно в закрытой среде), отметьте Add New Clients To Database.
BXP IO Service Preferences. Также разрешите ему "слушать" на одном или нескольких интерфейсах и, если есть желание, измените местоположение виртуальных дисков. Естественно, что указанный физический диск должен иметь достаточный запас емкости.
Теперь, когда все настроено как следует, можно запускать сервисы. Делается это, как уже было сказано, руками, через Сервисы - искомые сервисы BXP имеют имена, начинающиеся с "BXP" и (если вы используете PXE или BOOTP) "3Com". Всего их должно насчитываться пять-шесть штук - в зависимости от того, используете ли вы собственный TFTP-сервер. Запустите их и не забудьте отметить тип запуска Автоматический.



После запуска сервисов зайдите BXP Administrator - и в Tools-Configure Bootstrap выберите параметры:
путь должен указывать на C:\Program Files\Venturcom\BXP\TFTPBOOT\VLDRMI13.bin;
адреса - получаемые по DHCP, адреса из базы данных, Verbose Mode - Да.
После нажатия на OK программа физически пропатчит ваш загрузочный образ (это напоминает мне конфигурацию очень прикольного трояна thing) - и таким образом клиент будет работать с указанными вами опциями.
Теперь в вашем распоряжении - полноценный сервер сетевой загрузки. Осталось создать загрузочный образ операционной системы - и все готово.
Seis: создаем загрузочный образ
Загрузочный образ ОС - это, фактически, содержимое вашего загрузочного раздела, но перенесенное на виртуальный диск. Кроме того, вашу Windows 2000 следует пропатчить патчем BXP Client, который добавляет драйвер сетевого "винчестера".
Итак, для начала на серверной машине создайте с помощью BXP Administrator виртуальный диск. Вообще, все остальное будет происходить, в основном, в этой программе. Выберите I/O-сервер, щелкните на нем правой кнопкой и выберите Создать виртуальный диск. Теперь его нужно отформатировать.
Делается это следующим образом. Сначала примонтируйте новый диск (самый простой способ сделать это - выбрать диск и нажать Ctrl+M). Теперь этот виртуальный диск примонтирован в виртуальный драйв, который, как вы, вероятно, уже заметили, появился у вас на сервере (помимо диска с лицензиями). Учтите, что "мэппинг" работает только при запущенном BXP Administrator. Теперь отформатируйте этот диск самым обычным для Windows способом и отмонтируйте его обратно. Теперь диск готов для записи образа.
Следующий шаг потребует внимательности. Создайте нового клиента на сервере - можете указать для него фиксированный MAC-адрес (в качестве "волшебных пирожков" прокатывают вопросительные знаки), если хотите ограничить загрузку только определенными рабочими станциями. Теперь самый интересный момент: укажите в настройках тип загрузки С жесткого диска. Не спрашивайте зачем - так нужно. Перезагрузите клиентскую машину, войдите в BIOS и первым номером поставьте загрузку по сети. Теперь с перезагрузки вы должны увидеть опрос DHCP и получение "пяти точек". На самом деле каждая точка отвечает за получение определенной опции настройки (это как слэш-роторы и дот-тикеры при загрузке Unix'ов - вроде фигня, но kernel-хацкеры в курсе каждого оборота) - как выяснилось из исходного кода PXE BIOS. Если у вас проблема с настройками DHCP, не найден I/O-сервер, на сервере не найден загрузочный файл или возникла еще какая проблема - вы получите об этом сообщение.


После загрузки образа с сервера BXP продолжит загрузку с локального жесткого диска - и это то, что нам пока нужно. После загрузки таким прихотливым способом (и только так!) установите из инсталляции BXP клиентскую часть (а иначе вы ее и не установите). Это, фактически, два компонента: драйвер виртуального диска и маленькая программка, которая копирует ваш диск C: (только С - это жестко закодировано и никак не меняется) на виртуальный диск на сервере. Если инсталляция прошла успешно, вы увидите новый виртуальный диск - это ваш образ на сервере, запускайте создатель образа (поищите его в Программах) и в качестве цели копирования укажите этот диск. Тэкс-фэкс-пэкс! - и через пару минут вы будете как никогда близки к счастью.

Теперь снова переходите на сервер и измените тип загрузки клиента на С виртуального диска. Вам откроется три опции: "с первого диска", "с первого свободного" и "показать дисковое меню" для выбора клиентом одного из нескольких образов. Что касается выбора диска клиентом, то тут я не придумал ничего умного - но, поскольку размер виртуальных дисков ограничен, то, возможно, действительно имеет смысл сделать, например, один диск для работы, а второй для игр. Загрузка же "первого попавшегося" имеет смысл только в случае, если все рабочие станции одинаковы, так что каждая станция может загружаться с любого образа - и то очень вероятно, что пользователь пожелает как-то персонифицировать свой образ и в таком случае захочет пользоваться только одним диском. Короче - загрузка с первого диска является самым простым и логичным выбором.
Дополнительно по отношению к образам дисков есть несколько стратегий использования, настраиваемых в BXP Configuration. Для настройки использования виртуального диска этот диск должен быть отключен от всех клиентов (даже от тех, что загружаются с винчестера - они ведь тоже лочат виртуальный диск, только что не первым номером). Итак, вы можете создать для диска write-кэш, причем как в памяти клиентского компьютера, так и на диске сервера. На самом деле кэш является еще и оверлейной областью - то есть, когда вы будете записывать на виртуальный диск, запись будет производиться не в образ, а в оверлей. Естественно, что оверлей в памяти будет куда быстрее, но так же понятно, что он не сохраняет своего состояния. Это полезно, когда вы настраиваете, например, компьютерный класс и в ваши планы не входит переустанавливать систему после нашествия каждой следующей орды обезбашенных хакеров.


Кроме прочего, дисковый кэш ( в оперативной памяти клиента тоже - но это очевидно) персонифицирован - то есть сколько пользователей, столько и кэшей. Чего это дает? Получается, что сотня пользователей может "прикуривать" от одного загрузочного образа, но при этом каждый может вносить в систему изменения, и BXP будет хранить их в компактном виде персональной "дельты". Конечно, такая конфигурация будет сильно нагружать сеть, и есть свидетельства, что процессор сервера тоже будет очень греться, так что за экономию дисковой памяти сервера придется платить его повышенной мощностью и гигабитной сетью - иначе работа будет медленной.
Внимание: для того чтобы изменять режим использования образа, нужно не просто "положить" всех подключаемых клиентов, но и "выкатить" виртуальные диски, то есть зайти в настройки каждого клиента и исключить нужный образ как вариант загрузки. Кроме того, не делайте образ диска, если у вас включен кэш - вся запись пойдет именно туда, кэш разбухнет (а в случае кэша в оперативке - так и вообще забьется). Это неправильно.
Siette: запускаем змея в космос
Собственно, это самая короткая и простая часть дела: если вы все сделали правильно, то просто перезагрузите клиентскую машину и убедитесь, что все пучком. Получилось? Тогда можете щемиться на Караваевы дачи закупать остальные бездисковые компы, экономя на каждом по 30 американских рублей - но самая главная экономия будет, конечно, на вашей работе по настройки одного компа вместо кучи.
Ocho: мы строили, строили и наконец построили
Собственно, все, только что рассказанное,- это так себе, предисловие фактически. То есть вы, конечно, можете настроить систему и при определенном везении даже продлить ее trial'ный период на следующую пятилетку. Но это все, так сказать, цветочки для сисадминов, которые, как известно, хоть и super, но все-таки юзеры. Но все-таки хотелось бы не тырить софт Venturcom ценой 1500 зеленых, а честно его порвать и реконструировать. Поэтому любой нормальный хацкер должен срочно закатать все, чего там у него закатывается, и наваять OpenBXP, работающий под Linux и другими системами. В целях портабельности я бы выбрал Java или Perl - заодно получится компактный и структурированный исходный код.


Несколько наводящих подсказок. Первое, что мы уже и сделали, это использовали альтернативный сервер DHCP, то есть эта компонента у нас уже Open. Точно так же и TFTP- и PXE-серверы являются чем-то совершенно от BXP не зависимым. Учитывая, что и PXE, и BOOTP представлены хоть и бесплатными, но все-таки принадлежащими 3Com, серверами, я рекомендовал бы просто игнорировать эти варианты загрузки (хотя бы временно, до лучших времен). Кстати, если вы настроили DHCP так, как показано в этой статье, то вам эти сервисы, что называется, однозначно не упираются - я их даже не стартовал.
В качестве шага к светлому будущему я предпринял установку бесплатного Solar Windows TFTP Server v.6.0, переписал в его каталог C:\TFTP-Root файл VLDRMI13.bin, после чего спокойно положил сервис BXP TFTP - и все продолжало работать как ни в чем не бывало (ну, за исключением лагов "TFTP Timeout", которые фиксировал Solar TFTP - но загрузке это не мешало, да и кто знает, как там работал BXP TFTP, я в его логи не вдавался).

Итак, осталось четыре сервиса, которые воленс-ноленс придется реконструировать, поскольку падение любого из них мгновенно делает сетевую загрузку невозможной. Исследование закладки General дает нам следующие соответствия имен файлов (в каталоге C:\Program Files\Venturcom\BXP\) и сервисов:

Кроме того, придется разобраться с клиентскими модулями: модулем BNClient размером 24 Кб, драйвером BXP Miniport SCSI Virtual Adapter (копии всех используемых файлов лежат в C:\WINNT\System32\BNTemp, 107 Кб) и самым ужасным файлом - VLDRMI.bin.
Ужасен этот файл не столько своим небольшим размером (всего 22 Кб, половина из которых - диагностические сообщения, однородные массивы и сообщения об ошибках), сколько полным отсутствием знакомых ориентиров вроде системных вызовов, поскольку на момент загрузки он работает в среде PXE bre-boot-OS, где, естественно, доступны какие-то системные вызовы, например BIOS, в том числе сетевые PXE, но, как это работает, придется изучать с нуля. Для дизассемблирования помогут такие подсказки:


сначала сверните строки в конце текста и однородные массивы по всему тексту - из-за неизвестной точки входа это не делается автоматически;
данные процедуры по соглашению кодеров vldrmi находятся за телом этой же процедуры, и, поскольку все происходит в одном сегменте, адресация таких "локальных переменных" часто осуществляется через CS;
выравнивание кода - по границам двойных слов, так что пару нулей часто означает границы процедур;
типичный пролог процедур: 66h, 60h, 6h, 1Eh - что в терминах ассемблера выглядит как:
pushad

push es

push ds

- или что-то в этом роде, после нескольких удачных попаданий остальные процедуры найдутся сами.
Есть еще небольшая наводка по поводу "где лежат параметры, которые изменяются в процессе настройки". Есть такая простая утилита fc (типа File Compare) - сделав копию с образа и изменяя параметры, можно обнаружить следующее (флажки 57C8-57C9 - последние байты в файле):

На момент публикации статьи я уже продвинулся дальше, но сегодня моя цель - не выкладывать вам код, который даже и дезассемблировать-то нельзя (а fc - не дезассемблер, так что не придеретесь), а просто показать, что все делается, и сравнительно быстро. Задача предстоит сравнительно сложная, но детерминированно разрешимая.
Решив ее, вы немедленно станете героем дня, многие конторы мира начнут вас хотеть, а вы сами сможете создать вокруг себя движение - в общем, варианты на выбор. А остальные пусть очередной раз переписывают свое резюме, каждому, как говорится, свое.

Здесь хранится все. Реестр системы Windows XP

Системный реестр ОС Windows XP - это объект, в котором регистрируются большие объемы самой разной информации. Впервые он появился в Windows NT. Прообразом реестра можно считать инициализационные файлы (INI-файлы). Именно в них разработчики ПО начали хранить разного рода данные, определяющие конфигурацию утилит. Кстати говоря, многие до сих пор не отказались от старых методов: видимо, не хотят связываться с реестром.


Таким образом, разработчики к этому нововведению Microsoft относятся неоднозначно. Кое-кто даже называет реестр "черным ящиком". Разумеется, доводов в пользу реестра ничуть не меньше. Вот главный из них: он удобен для пользователя. Хотя и не всегда.

Проиллюстрировать это проще всего примером с настройками популярного файлового менеджера FAR. Как известно, он умеет запоминать адреса FTP-серверов, чтобы пользователю не приходилось вводить их каждый раз вручную. Адреса эти сохраняются в реестре. Таким образом, юзеру не составит никакого труда найти эти ссылки и при необходимости подредактировать их параметры вручную.
И не надо рыскать по всем каталогам в поисках настроек. То есть это несомненный плюс, ибо отдельный файл конфигурации может находиться где угодно (а у современных разработчиков фантазия богатая, так что разведмероприятия часто занимают уйму времени). Однако, положим, вы забыли сделать копию нужной ветви реестра, и тогда после форматирования раздела и повторной установки системы ссылки вам придется восстанавливать все нужные параметры по памяти. Этого можно было бы избежать, если бы настройки программы хранились в отдельном файле, расположенном где угодно, хоть на другом разделе диска (и при переустановке системы они спокойно остались бы там, где были).
Безусловно, сама компания Microsoft рекомендует сторонним разработчикам хранить всю информацию об их программах в реестре. Благо в Windows XP никаких ограничений на его размер не предусмотрено. Поэтому, кстати, в реестре накапливается очень много мусора, который необходимо время от времени выбрасывать.

Тут мы приходим к удивительному выводу: как ни делай, все равно будет не так. Никто в этом не виноват, ни Билл Гейтс, ни Стив Баллмер. Просто они люди. Такие же, как и мы с вами. Мельчайшая амеба выглядит так, что поражает наше воображение сильнее, чем самая причудливая авангардная картина, и устроена куда более рационально, чем самая лучшая программа. Но тот, кто сотворил амеб, не занимается написанием софта. Поэтому будем изучать то, что есть, или ждать, когда обломится грант, на который можно будет жить припеваючи, созерцая в микроскоп нечто более интересное, чем какой-то реестр какой-то операционной системы.


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

Концепция, заложенная в основу построения реестра, имеет необычное название: "принцип селекции реестра при помощи кустов". Это означает, что каждая область памяти предназначена для хранения определенного типа данных. При этом различные юзеры не могут использовать данные друг друга, если только они сами не заявили о готовности "жить колхозом". Вместо термина "куст" довольно часто употребляют аббревиатуру HKEY (handle to a key). Это неправильно, поскольку куст - отдельный компонент файла или область памяти.
А HKEY, как следует из ее расшифровки, - дескриптор раздела, указывающий на инструмент, при помощи которого предоставляется доступ к данному уровню реестра. Если же слово "куст" вызывает у вас неприятные ассоциации, то можете вместо него использовать термин "улей" (hive), распространенный в англоязычной документации. Куст состоит из разделов, подчиненных разделов и параметров, а также имеет корни на верхнем уровне иерархии реестра.

В системе Windows 98 реестр хранился в двух файлах (SYSTEM.DAT и USER.DAT), а вот Windows XP устроена намного сложнее. В ней уже не сделаешь резервные копии реестра, сохранив всего два вышеупомянутых файла. Впрочем, реестр в Windows XP организован куда логичнее: практически каждый куст является файлом, его можно перемещать и редактировать. Кусты реестра, к которым система обращается наиболее часто, расположены следующим образом:
куст HKEY_LOCAL_MACHINE\

System - файл Windows\system32\config\system;

куст HKEY_LOCAL_MACHINE\SAM - файл Windows\system32\config\sam;

куст HKEY_LOCAL_MACHINE\Security - файл Windows\system32\config\security;

куст HKEY_LOCAL_MACHINE\Software - файл Windows\system32\config\software;



куст HKEY_CURRENT_USER - файл <профиль пользователя>\ntuser.dat;

куст HKEY_CURRENT_CONFIG - файл Windows\system32\config\system;

куст HKEY_USERS\.DEFAULT - файл Windows\system32\config\default.
Помимо основных файлов, к реестру относятся вспомогательные, имеющие расширения LOG, ALT и SAV. LOG-файл содержит список изменений, которые были сделаны пользователем в определенном кусте за последний сеанс работы. ALT-файл - это резервная копия куста HKEY_LOCAL_MACHINE\System, используемая системой Windows для восстановления работоспособной конфигурации. Наконец, в SAV-файлах хранится содержание кустов на момент запуска ОС (только ntuser.dat не имеет такого файла). Они нужны системе для того, чтобы после сбоя восстанавливать удачные параметры.
Реестр является одной из главных составных частей Windows XP. В нем содержатся не только параметры программных и аппаратных компонентов системы, но и сведения о ней. Иными словами, при помощи реестра можно отредактировать практически все. Поэтому структура его достаточно сложна. Если бы он не состоял из разделов, а представлял собой единый информационный массив, то реально пользоваться им умели бы лишь настоящие гуру. Кстати, кусты и разделы - это вовсе не одно и то же. Кусты - это файловые составляющие раздела, которые при загрузке системы собираются в единую древовидную структуру.

К нашему счастью, Microsoft всегда думает о простых пользователях. И это вовсе не ирония: если у компании не все получается так, как нам хотелось бы, то виной тому обстоятельства, о которых я рассказал в начале статьи
Раздел HKEY_CLASSED_ROOT является пользовательским. Может быть, именно поэтому с ним всегда довольно сложно работать. Здесь содержатся данные о модели многокомпонентных объектов (Component Object Model, или COM), а она лежит в основе технологии ActiveX. Под компонентом в данном контексте я подразумеваю все что угодно, от простейшего текстового файла до низкоуровневого объекта. Именно тут находятся записи о типах файлов и ассоциированных с ними приложениях.


Одни записи содержат информацию о расширениях имен файлов. Причем, поскольку Windows XP поддерживает длинные имена, в реестре задаются типы расширений, состоящих более чем из трех символов. Также эти записи указывают на определенные операции, которые могут выполняться с файлами того или иного типа. Другие записи определяют приложения, используемые для открытия файлов разных типов. В общем случае компоненты расширения могут описывать какие угодно элементы, выполняющие специальные операции. Но обычно указывается только приложение, вызываемое для открытия файлов определенного типа по умолчанию. Также здесь перечислены приложения, являющиеся для данного типа дополнительными. Например, можно определить, какие именно пункты будут находиться в контекстном меню, вызываемом кликом правой кнопки мыши по иконке, ассоциируемой с конкретным типом файла.
Раздел HKEY_CURRENT_USER посвящен настройкам программного обеспечения, соответствующим текущей учетной записи. Именно здесь находится информация, определяющая параметры работы меню "Пуск", конфигурацию "Рабочего стола" и цветовые схемы интерфейса. Данные часто обновляются, и вот по какой схеме: из пользовательского раздела HKEY_USERS в HKEY_CURRENT_USER копируются записи, меняющиеся в процессе работы, причем окончательный вариант сохраняется в HKEY_USERS по завершении сеанса.

Задачи, выполнению которых служит данный раздел, таковы, что все его компоненты должны быть предельно информативны. Однако существенного влияния на операционную систему они не оказывают. Практически все изменения в данный раздел вносятся не напрямую, а через приложения или системную "Панель управления".
Раздел HKEY_CURRENT_USER состоит из подразделов. Некоторые из них используются достаточно часто, остальные - от случая к случаю. Подраздел AppEvents включает в себя перечень возможных событий, относящихся к приложениям. В частности, там описываются звуковые эффекты. За командные запросы отвечает подраздел Console. Его содержимое модифицируется напрямую, графических утилит для его конфигурирования нет. Хотя и редактировать там особо нечего, вряд ли стоит морочить себе голову размером курсора или видом нестандартного шрифта.


Важный подраздел - Control Panel. В нем находятся записи всех приложений "Панели управления", позволяющих вносить изменения в параметры работы компьютерной среды, то есть задавать региональные стандарты, режимы работы мыши и клавиатуры и т. д. Однако опции, связанные с применением специального программного обеспечения, в данном подразделе далеко не всегда присутствуют. Интернетчикам стоит поближе познакомиться с подразделом Identities, где хранится перечень всех идентификаторов Сети и их параметры. В частности, здесь расположен список заблокированных пользователей.
Абонентам локальных сетей понадобятся подразделы Network и Printers. В них находятся перечни всех сетевых дисков и принтеров. А списки используемых данным юзером сетевых соединений хранятся в подразделе RemoteAccess. Наконец, подраздел Software. Как нетрудно догадаться, именно тут располагается список всех программ, применяемых в системе, а также их настроек. Software разбит на множество подраздельчиков - по одному на каждого поставщика используемого ПО.
Коль скоро мы упомянули о разделе HKEY_USERS, разберемся с ним. В нем перечислены пользователи, имеющие доступ к реестру. Очевидно, что корректировать большую часть находящейся там информации бесполезно, она все равно обновляется из HKEY_CURRENT_USER. Так что используется данный раздел только для изменения учетных записей неактивных пользователей.
В разделе HKEY_LOCAL_MACHINE хранится информация об аппаратных средствах системы и об их применении. Первое, что надо сделать, если железка не работает, - это посмотреть, есть ли о ней сведения в данном разделе. Если нет, то дальше искать незачем: данный девайс работать не будет. Разумеется, именно тут можно найти информацию обо всех драйверах, включая номер версии каждого из них. Впрочем, считать этот раздел полностью "железным" нельзя: в нем содержатся основные системные параметры, имеющие отношение ко всем пользователям. Таким образом, приложения, используемые всеми юзерами, непременно оставят здесь свой след.


Отдельная тема - данные систем безопасности. В соответствующий раздел стоит заглянуть каждому владельцу системы Windows XP Home Edition, завидующему тем, кто купил профессиональную версию, но не желающему разоряться на ее приобретение (и нечего смеяться, сведения о том, что все русские отовариваются исключительно у пиратов, не соответствуют действительности).
Профессиональная версия не так уж сильно отличается от домашней. Например, "профессионал" имеет доступ к параметрам, позволяющим настроить режим обеспечения безопасности, а "домовой" - нет. Однако сами эти параметры присутствуют и в той, и в другой ОС. Только в домашней версии они скрыты от людских глаз.
Например, мы хотим быстро изменить настройки безопасности для гостевого входа. Идем в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\

Control\Lsa и находим там параметр Forceguest. А дальше все просто: если его значение равно нулю, то функция неактивна, а если единице, то наоборот. Включаем соответствующий режим, и все локальные параметры обеспечения безопасности как на ладони. Если решите ими воспользоваться, то будьте аккуратнее. Постарайтесь, так сказать, обойтись без фанатизма. А то прикроете доступ всем, кому можно и кому нельзя.
Если предыдущий раздел обычно бывает очень большим, то по сравнению с ним HKEY_CURRENT_CONFIG - это лилипут. В нем всего два подраздела: Software и System. Хранящиеся в них записи используются для того, чтобы сконфигурировать дисплей и принтер. Также в данном разделе содержатся некоторые вспомогательные сетевые параметры.
Подраздел Software состоит из двух частей: Fonts и Microsoft. Если назначение первой ясно из ее названия, то во второй хранятся так называемые Internet Settings, параметры функции автоматического набора телефонного номера и описание способов использования локальных устройств для выхода в интернет.
В подразделе System находятся параметры принтера, звуковых и видеоустройств. Именно этот подраздел содержит параметры работы API Microsoft DirectSound. В нем же настройки источника бесперебойного питания. И, разумеется, в System хранятся сведения о разрешениях видеокарты.


Как с ним работать
Штатное средство системы Windows для работы с реестром так и называется - "Редактор реестра". Запустить его можно командой regedit. Естественно, в меню "Пуск" эта программа отсутствует: в Microsoft считают, что большинству пользователей нет никакой надобности редактировать реестр вручную. Если вы придерживаетесь иного мнения, а каждый раз вызывать "Редактор реестра" через "Пуск" > "Выполнить" вам лень, то меню следует подредактировать. Для этого кликаем по "Пуску" правой кнопкой и в появившемся списке выбираем "Проводник". Нас интересует папка Documents and Settings\<Пользователь>\Главное меню\Программы. Для того чтобы добавить в нее кнопку запуска "Редактора реестра", кликаем правой кнопкой мыши по пустому месту в правом фрейме, выбираем "Создать ярлык" и находим программу regedit.exe в каталоге Windows. После добавления нажимаем на "Пуск", вот и все.
При запуске "Редактора реестра" появится окно, отдаленно напоминающее стандартный "Проводник" системы Windows. В левом его фрейме находятся названия разделов, подразделов и параметров, а в правом - их значения. Как я говорил в начале статьи, главное достоинство реестра заключается в том, что он объединяет данные различных форматов, или, как это принято говорить применительно к реестру, различные типы данных.
Тип REG_SZ (String) представляет собой обычную строку текста, то есть последовательность символов. Эта строка всегда должна заканчиваться нулевым символом. Тип REG_BYNARY (Bynary) - необработанные двоичные данные. В этом формате хранятся почти все сведения об аппаратных компонентах системы, причем "Редактор реестра" данную информацию выводит на экран в шестнадцатеричном формате. Тип REG_DWORD (DWord) - это данные, являющиеся целым числом в диапазоне от 0 до 4 294 967 295. "Редактор реестра" может отображать их в двоичном, десятичном или шестнадцатеричном формате. Такой вид обычно имеют параметры служб и драйверов. Тип REG_MULTI_SZ (Multi-String) - многострочный текст. Понятно, что информацию в таком формате юзеру воспринимать легче. Символом, обозначающим конец строки в REG_



MULTI_SZ, является "0" (ноль).
Переменные, обрабатываемые любой программой или службой, принадлежат к типу REG_EXPAND_SZ (Expandable String). Этот тип определяет строку переменной длины. Необходимость в таких данных объясняется тем, что пользователь имеет определенную свободу формирования файловой системы и т. д. В частности, переменная %ProgramFiles% задает расположение соответствующего каталога, а его полное имя может быть, в принципе, каким угодно. Наконец, уникальный тип REG_FULL_RESOURCE_DESCRIPTION представляет собой последовательность вложенных массивов и используется для хранения полного списка ресурсов всех драйверов.
Стандартный "Редактор реестра" не только позволяет вручную исправить любой параметр, но и обладает минимальным набором инструментов, полезных в определенных ситуациях. Речь идет в том числе о возможности импорта-экспорта данных. Эти функции бывают востребованы в том случае, если вы проводите эксперименты над системой или переустанавливаете Windows после форматирования раздела (не надо свысока относиться к такому методу лечения "недугов" ОС, порой намного легче и быстрее переустановить систему, чем разбираться с неполадками).Экспортировать можно как весь реестр, так и отдельную его ветвь. Рассмотрим несколько типичных случаев, в которых создание копий является оправданным. Предположим, вы скачали условно бесплатную программу и перед тем, как приобрести полную версию, хотите оценить ее функциональность. Очевидно, что двух-трех дней для этого явно недостаточно, а вот месяца как раз хватит. Перед установкой софтины стоит сделать копию всего реестра (радикалы предложат вам также изготовить образ системного раздела, но это, на мой взгляд, перебор). Копия нужна на тот случай, если вас вдруг отправят в командировку, причем ровно на месяц.
Вы возвращаетесь, хотите продолжить знакомство с программой, а она вам вежливо сообщает: так и так, период бесплатной эксплуатации истек. Повторная установка после удаления софтины ни к чему хорошему не приведет, поскольку где-то в реестре осталась запись о том, когда она была впервые проинсталлирована. Конечно, можно попробовать удалить все упоминания об этой программе вручную, нужно только воспользоваться функцией поиска (через "Редактор реестра"). Но проще всего восстановить старый реестр целиком из заранее сделанной копии. Тем более, что пока вы были в командировке, вряд ли в реестре появилось что-то полезное.


Второй случай удобнее всего проиллюстрировать на примере файлового менеджера FAR. Конечно, хорошо, когда сторонние разработчики прислушиваются к советам Microsoft и используют реестр. Если же вы хотите сохранить все настройки после переустановки системы, то вам надо принять все необходимые для этого меры. Для этого открываем "Редактор реестра" и находим ветку HKEY_CURRENT_USER\Software\Far, в ней хранится все, что имеет отношение к данному приложению. Мы можем сохранить ее целиком или только какую-то ее часть. Кстати, интересующий нас список FTP-серверов находится тут: HKEY_CURRENT_USER\Software\Far\Plugins\FTP\Hosts.
В результате экспортирования получится файл с расширением REG. Это обычный текстовый файл, который можно просматривать и редактировать в "Блокноте". Кстати, некоторые пользователи предпочитают именно такой способ работы с реестром: они экспортируют ветку, редактируют сохраненный файл и импортируют его обратно в реестр.

Разумеется, экспортировать ветку реестра следует перед тем, как вы собираетесь что-то в ней изменить. Данная мера является обязательной. Ведь чем отличается профессионал от дилетанта?
Предусмотрительностью. Один постоянно твердит: "Знать бы, где упадешь!" - а другой молча подстилает соломку. А падают и тот, и другой одинаково часто.

У каждого пользователя есть любимые ветки реестра, те, которые он редактирует чаще всего. Чтобы получить быстрый доступ к ним в "Редакторе реестра", следует поместить ссылки в "Избранное".
Напоследок немного о безопасности. Если вашей машиной пользуется еще ряд лиц, то непременно возникнет вопрос о разграничении прав доступа к файлам реестра. Чтобы решить данную проблему, зайдите в раздел "Правка" > "Разрешения" (в "Редакторе реестра"). По умолчанию установлены параметры безопасности, оптимальные в общем случае. Но где вы на практике встречали этот самый "общий случай"? Где угодно, только не на своей машине.
Поэтому смело ограничивайте в правах тех, кого следует, и расширяйте возможности того, кому положено. Только помните, что в соответствии с принятой в Windows концепцией безопасности запрет имеет приоритет перед разрешением. Это я снова о фанатизме, которого следует избегать. Особенно при работе с таким сложным инструментом, каким является системный реестр.


Registry Toolkit
Набор утилит под общим названием Registry Toolkit предназначен для тех, кто не хочет заморачиваться изучением реестра, а желает получить инструмент, позволяющий выполнять несколько простых и полезных операций. Прежде всего дефрагментацию. Суть этой процедуры заключается в том, что реестру придается линейная структура, которую он теряет за время эксплуатации. "Разбухание" приводит к замедлению работы системы в целом, поэтому следует периодически приводить его в порядок.
Вторая функция этого пакета, имеющая отношение к реестру, позволяет делать резервные копии и восстанавливать из них реестр. Необходимость этой функции рассмотрена в статье, так что не стану повторяться. Проживает эта программа по адресу antispy4you.com/index.php?adv=padrdefrag, откуда ее и можно скачать. Кстати, она русифицирована. Однако бесплатно пользоваться пакетом можно только три недели. Потом придется разориться на $11,95.
Программа jv16 PowerTools 2005
Эта программа для работы с реестром, проживающая по адресу www.macecraft.com/jv16powertools2005, была одной из самых популярных в России. Ее широкому распространению на постсоветском пространстве очень способствовала ее цена: с нас, бедных и сирых, разработчики денег не брали. Но отдельные сограждане, вместо того чтобы всячески поддерживать свою репутацию, бросились покупать футбольные клубы. И вот результат: теперь jv16 PowerTools стоит $29,95. Для всех без исключения. Прошу понять меня правильно. Мне денег не жалко, за державу обидно.
А программа действительно хороша. Особенно тем, что предлагает пользователю массу полезных возможностей, таких как чистка реестра, обычный поиск или поиск с автоматической заменой. Освоить jv16 PowerTools 2005 по силам даже юзеру, имеющему отдаленное представление о внутреннем устройстве реестра. Скажем, для редактирования пунктов контекстного меню "Открыть с помощью..." не надо залезать в реестр: программа сама определит зарегистрированные приложения, выведет на экран их полный список, из которого пользователь сможет исключить заведомо неактуальные программы.


К тому же jv16 PowerTools 2005 умеет не только работать с реестром, но и выполнять некоторые другие операции, в частности, переносить папки и находить дубликаты файлов. Запускать любое задание можно как вручную, так и по расписанию.
RegWorks
RegWorks - это самый настоящий альтернативный редактор. Честно говоря, когда возникает необходимость поработать с реестром, лично я запускаю не regedit.exe, а данную программу. Главным образом потому, что по интерфейсу эти утилиты похожи. То есть автор RegWorks Евгений Лоскутов (я всегда говорил, что наши программисты лучшие в мире) решил не морочить голову знакомым с Regedit пользователям: никакого времени на освоение тех возможностей программы, которые поддерживает стандартный инструмент, не требуется. Поэтому проблемы перехода со штатного редактора на альтернативный попросту не возникает.
Две фирменные фишки RegWorks - монитор реестра и справочная система. Монитор позволяет практически в реальном времени (раз в 400 миллисекунд) фиксировать все изменения, происходящие в реестре. Это очень полезно не только когда вы устанавливаете новые программы, но и когда хотите постоянно проводить диагностику системы на предмет вирусного заражения (согласитесь, лишний контроль никогда не помешает). Гибкая система фильтров позволяет не только видеть весь реестр как на ладони, но и отлавливать конкретные изменения.
Справочная система программы - это очень компактный интерактивный мануал по реестру. Полезность его трудно переоценить. Предположим, вы примерно знаете, чего именно хотите добиться, но не знаете, что при этом надо поменять в реестре. При помощи программы RegWorks задачу решить просто. Находите в справочнике необходимую вам информацию, изучаете теоретическую часть и прямо из документа переходите в нужное место реестра.
Программа полностью русифицирована и распространяется бесплатно. Хотя в последнем я не совсем уверен. Дело в том, что англоязычный сайт http://www.regwrks.com/
ссылается на http://www.regwrks.ru/. Тот же самый адрес указан и в разделе "О программе", вызываемом с панели управления софтины. Но русский сайт почему-то недоступен. На английском же сказано, что программа стоит 30 американских долларов. Хотя на русских софтовых порталах она проходит как freeware. Как бы то ни было, я пользуюсь RegWorks достаточно давно, и никаких денег она не просит. Найти программу в Сети довольно просто.

Настройки реестра

Регистрационный номер (Windows 95/98/Me)
Если вы потеряли свой регистрационный номер от компакт-диска с Windows, то не сможете переустанавливать систему. Но реестр поможет нам!
Для этого найдите ветвь:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion

и найдите строковое значение ProductKey, который и содержит ваш регистрационный номер
Регистрационные данные
Если вы нажмете на кнопку О программе в Проводнике или в других программах, поставляемых с Windows, то увидите, кто обладает правом использования этой копии. Также эти данные можно увидеть в апплете Система Панели управления. Возможно, вам компьютер достался от вашего босса Пупкина, и вы страстно хотели бы изменить регистрационные данные. Я помогу вам.
Для Windows 95/98/Me: Откройте раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion и изменяйте строковые параметры RegisteredOwner (Ваше имя) и RegisteredOrganization (название организации)
Для Windows NT/2000/XP: Название раздела чуть-чуть другое - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion
Путь установки Windows
Иногда приходится переустанавливать Windows с разных мест - с жесткого диска, с компакт-диска, с записывающего CD-RW. Но Windows запоминает путь инсталяционных файлов, что порой создает проблему. Чтобы "обмануть" Windows, используйте строковый параметр SourcePath в разделе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup, указав ваш путь
Диспетчер задач Windows (Windows NT/2000/XP)
Чтобы запретить пользователю возможность запуска Диспетчера задач Windows, установите значение параметра типа DWORD DisableTaskMgr в разделе

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System

равным 1
Сообщение при загрузке
Можно настроить систему таким образом, чтобы при загрузке выводилось окно с вашим сообщением. Для этого откройте раздел HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon



(для Windows 95/98/ME) или HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon (для Windows 2000/NT) и создайте строковый параметр LegalNoticeCaption и введите вашу строку, которая будет выводиться в заголовке вашего сообщения, а для текста самого сообщения используйте строковый параметр LegalNoticeText в том же разделе. Теперь перед входом в систему появится созданное вами сообщение.
Пароль после ждущего режима (Windows XP)
Можно настроить систему таким образом, чтобы при включении компьютера после Ждущего режима появлялось диалоговое окно с приглашением ввести пароль. Для этого в разделе

HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Power создаем параметр типа DWORD PromptPasswordOnResume со значением 1.
Что скрывается в автозагрузке?
Существует несколько способов прописать программу в автрозагрузку. Самый простой - скопировать программу или ярлык в папку Автозагрузка. Например, у меня прописан там AVP Монитор. Но существует другой способ - через реестр. Этим способом часто пользуются вредоносные программы (вирусы, трояны, шпионы)
Сперва откройте раздел

HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion.
Найдите там подразделы Run, RunOnce, RunOnceEx, RunServices, RunServicesOnce. В этих разделах есть строковые ключи (некоторые разделы пустые), отвечающие за запуск программ. Название ключа может быть произвольным, а в качестве значения у них указывается запускаемая программа, если надо - то с параметрами. Обратите внимание на разделы, в названии которых присутствует "Once". Это разделы, в которых прописываются программы, запуск которых надо произвести всего один раз. Например, при установке новых программ некоторые из них прописывают туда ключи, указывающие на какие-нибудь настроечные модули, которые запускаются сразу после перезагрузки компьютера. Такие ключи после своего запуска автоматически удаляются.
Внимательно проверьте, что за программы у вас запускаются. Сразу после установки Windows в разделе Run присутствуют ключи с названиями internat.exe, LoadPowerProfile, ScanRegistry, SystemTray, TaskMonitor. В разделе RunServices - ключ LoadPowerProfile. Другие разделы пустые. Остальные ключи, которые могут присутствовать у вас в реестре, были добавлены другими установленными программами. Подумайте, все ли они нужны вам при загрузке и лишнее просто удалите. Это позволит значительно ускорить загрузку Windows.


Но это не единственный раздел, откуда запускаются программы. Перейдем к другой ветви, а именно к

HKEY_CURRENT_USER и откроем там раздел SOFTWARE\Microsoft\Windows\CurrentVersion. Там есть только два подраздела, отвечающие за автозагрузку: Run и Runonce. Изначально они пустые, так что все записи там сделаны другими программами.
Для операционных систем Windows 9x возможно загружать программу с помощью драйвера VxD. Полный список загружаемых драйверов находится в разделе HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\VxD. В Windows NT/2000 нет VxD драйверов, но в разделе HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\SessionManager в параметре BootExecute можно прописать программу, которая будет грузиться еще до загрузки графической оболочки и сервисов.
Запрет запуска экранной заставки во время работы программы дефрагментации диска (Windows 95/98/Me)
Запуск экранной заставки во время работы программы дефрагментации диска может замедлить или прервать работу приложения дефрагментации. Для блокировки запуска экранной заставки во время работы дефрагментатора диска присвойте строковому параметру DisableScreenSaver значение "Yes" в разделе

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Defrag\Settings.
Чтобы отключить данную блокировку используйте значение "No" (Установлено по умолчанию)
Необходимо отметить, что эта настройка распространяется только на стандартную программу дефрагментации, поставляемой с Windows. На работу дефрагментаторов других производителей эта настройка не влияет

Правила написания и структура reg-файлов

Структура reg-файлов
Знание реестра Windows будет не полным без умения написать reg-файл. Начнем с того, что это такое. Reg-файл - это файл, имеющий определенную структуру и содержащий информацию, которая может быть импортирована в реестр. Если была заблокирована работа с редактором реестра , то наиболее легким способом подредактировать реестр будет создание и импортирование reg-файла (конечно, можно выйти в DOS, в защищенный режим, воспользоваться другими программами, но это все гораздо сложнее, а главное дольше).
К reg-файлам предъявляются определенные требования по структуре. Начнем с того, что в первой строке файла обязательно должно быть введено (для Windows 9x)
REGEDIT4

или (для Windows 2000/XP)



Windows Registry Editor Version 5.00
Обратите внимание на то, что буквы должны быть большие. Кроме этого в первой строке ничего быть не должно. После этого текста ОБЯЗАТЕЛЬНО должна быть пустая строка. Затем, указывается раздел реестра, в котором надо прописать или изменить какие-то параметры. Название раздела должно быть заключено в квадратные скобки [...]. Ниже прописываются параметры, которые надо добавить, по одному параметру в строке. Если вам надо провести изменения в нескольких разделах, то вы должны оставлять одну пустую строку между последним параметром предыдущего раздела и названием следующего раздела. Может немного запутанно, но вот как это должно выглядеть:
REGEDIT4

[Razdel1]

"param1"="znachenie1"

"param2"="znachenei2"

"param3"="znachenie3"

[Razdel2]

"param_1"="znachenie_1"
Последняя строка в файле должна быть ПУСТОЙ. После того, как вы создали такой файл, просто запустите его как обычную программу, вам будет выдан запрос о необходимости провести изменения в реестре, и после положительного ответа информация из файла будет импортирована. О результатах импортирования Windows сообщит в появившемся после этого окне.
Примечание: Windows 2000/XP обладает обратной совместимостью и может обрабатывать файлы, созданные в Windows 9x. Но если вы экспортировали файл в Windows XP и перенесли его на Windows 9x, то вручную измените первую строчку на REGEDIT4
Теперь пару слов о параметрах, которые можно добавлять. Как вы, наверное, обратили внимание, в приведенном выше примере добавляются параметры с помощью строк типа "param1"="znachenie1". Т.е. таким образом добавляется СТРОКОВЫЙ параметр с именем "param1" и значением "znachenie1". Но ведь существуют еще и параметры двоичные и DWORD. Формат записи для их добавления несколько другой. Для параметров типа DWORD используется строка
"param"=dword:XXXXXXXX
Здесь "param" - имя параметра, dword - указывает на тип этого параметра (буквы должны быть обязательно маленькие!) и после двоеточия следует значение из восьми цифр в шестнадцатеричном (!) формате. Однако большинство параметров DWORD имеют значение либо 0, либо 1, значит, вы должны написать соответственно либо 00000000, либо 00000001 вместо значков ХХХХХХХХ. Пробелы в строке не допускаются.


Для добавления двоичного параметра формат записи несколько иной:
"param"=hex:XX,XX,XX,....
Теперь расшифрую эту строку. Ну, с названием параметра все ясно, после знака "=" идет hex, т.е. указывается, что это будет двоичный параметр, затем идут шестнадцатеричные числа, отделенные запятой. Например, если вам надо добавить двоичный параметр равный "be 00 00 00", то вы пишете строку
"param"=hex:be,00,00,00
В реестре существуют параметры "По умолчанию" ("Default"). Чтобы присвоить им какое-то значение через reg-файл, надо добавить такую строку:
@="znachenie"
Здесь значок @ показывает, что у нас присваивается значение параметра "По умолчанию". Обратите внимание на то, что он не заключается в кавычки.
Теперь я приведу пример простенького reg-файла, который прописывает в реестр сайт, устанавливающий домашнюю страничку в Internet Explorer'e:
REGEDIT4 [HKEY_CURRENT_USER\Software\
Microsoft\Internet Explorer\Main] "Start Page" = "http://diwaxx.ru/"
Удаление параметров
С помощью reg-файлов можно не только устанавливать новые параметры, но и удалять их. Например, для удаления раздела из реестра надо перед его именем в квадратных скобках поставить символ "-". Вот как это выглядит:
[-HKEY_LOCAL_MACHINE\Software\ QuickSoft\QuickStart]
Благодаря этой записи, подраздел "QuickStart" из раздела "QuickSoft" будет удален со всем содержимым.
Для удаления отдельных параметров используйте следующий синтаксис:
REGEDIT4 [HKEY_CURRENT_USER\Software]
"xxx"=-
Параметры командной строки
Редактор реестра можно запускать с некоторыми ключами
/s (импортирует значения из reg-файла без вывода диалогового окна)
/e (экспортирует параметры в reg-файл. Пример: regedit /e myfile.reg HKEY_USERS\.DEFAULT

Проблема очистки диска в Windows XP

Во время работы за компьютером на жестком диске накапливается большое количество ненужной информации. Это всевозможные временные файлы, скачанные из Интернет веб-страницы, а также не используемые файлы приложений. Чем больше программ вы устанавливаете и запускаете, чем чаще выходите в Интернет - тем больше шансов появления на жестком диске разного бесполезного мусора, который занимает драгоценное свободное место. Для поддержания порядка на своем ПК необходимо периодически устраивать уборку. Операционная система Windows XP предоставляет пользователю множество полезных утилит, среди которых есть программа под названием "Очистка диска".
Впервые данная утилита появилась еще в Windows Millennium и стала весьма популярна среди пользователей, благодаря удобству и простоте. Впоследствии программа была включена в состав утилит более новых версий операционных систем семейства Windows. Таким образом, мастер очистки диска (Disk Cleanup Wizard) перекочевал в Windows XP. Перейдем к рассмотрению примера работы мастера очистки диска, для того чтобы оценить все достоинства данной утилиты, а заодно научиться эффективно пользоваться ею.
Утилита "Очистка диска" располагается в стандартном наборе служебных программ Windows XP. Для ее запуска активируйте Пуск (Start), Программы (Programs), Стандартные (Accessories), Служебные (System Tools), Очистка диска (Disk Cleanup). Иначе программу можно запустить из командной строки, набрав ее название: cleanmgr. После запуска утилиты на экране появится рабочее окно программы.
Для продолжения работы необходимо выбрать логический диск, который будет подвергнут процедуре очистки. По умолчанию выбранным всегда является диск (C:). Также можно запустить мастер очистки, зайдя в "Мой Компьютер", выбрав соответствующий диск, и, кликнув на нем правой кнопкой, активировать закладку "Очистка диска". Тогда процедура очистки будет сразу же запущена специально для выбранного диска. После того как вы определите диск, который желаете очистить, можно нажимать OK. При этом мастер очистки диска перейдет к процедуре проверки состояния файлов на данном диске. Необходимо проявить чуточку терпения, так как эта процедура, как правило, занимает достаточно продолжительное время.


После завершения анализа текущего состояния диска, утилита представит отчет о проделанной работе, указав, сколько места можно освободить. Кроме того, мастер выведет на экран сводную информацию о том, за счет чего может быть освобождено пространство на диске. Попробуем разобраться в данном отчете, проанализировав построчно предоставленную мастером очистки диска информацию.
Мастер выводит на экран перечень категорий файлов, которые могут быть удалены или сжаты без ущерба для работы системы. Тем не менее, пользователю предлагается самостоятельно определить, что подлежит удалению, а что удалять не следует. Галочкой отмечаются группы файлов, подлежащие удалению. В конце каждой строки отображается объем в килобайтах, который можно высвободить удалением данной категории файлов.
Для того чтобы уверенно сделать свой выбор, пользователю необходимо понять, что представляют собой перечисленные файловые группы. Итак, мастер очистки диска предлагает подвергнуть процедуре удаления следующее:
 
загруженные и установленные файлы программ (Downloaded Program Files);
временные файлы из Интернета (Temporary Internet Files);
файлы, находящиеся в Корзине (Recycled Bin)
временные файлы приложений (Temporary Files);
временные автономные файлы;
автономные файлы;
автономные Web-страницы (WebClient/Publisher);
файлы журналов установки (setup log file);
сжатые файлы, к которым давно не было обращений;
файлы каталога индексатора содержимого, использованные ОС во время последней индексации.
Рассмотрим каждую группу чуть более подробно. Папка "Downloaded Program Files" предназначена для временного хранения элементов ActiveX и приложения Java, автоматически загружаемых из Интернета, при загрузке и просмотре различных web-страниц. Папка в любой момент может быть смело подвергнута очистке.
В каталоге "Temporary Internet Files" находятся веб-страницы, автоматически сохраняющиеся на жесткий диск во время работы в Интернете, для быстрого просмотра при повторном обращении к ним. При хорошем соединении время загрузки страниц по-новой не очень велико, а потому нет смысла оберегать содержимое данной папки. Поскольку в ней скапливается достаточно большое количество файлов, ее нужно стараться очищать достаточно регулярно.


В Корзину помещаются файлы после их удаления с диска. Это - последний рубеж, когда файлы еще не окончательно удалены, и их можно восстановить, пока "Корзина" не очищена. Рассеянный пользователь, нечаянно удаливший нужные файлы, легко может найти их здесь. Название Корзины говорит само за себя - она предназначена для мусора, и за ее переполнением нужно следить. Очистка Корзины избавит диск от уже ранее удаленных файлов.
Некоторые программы очень часто хранят временную информацию в файлах, в специально отведенной для этого папке TEMP. Как правило, перед закрытием таких программ эти файлы обычно удаляются. Тем не менее, это происходит не всегда, а потому в папке может накапливаться масса ненужной информации. Временные файлы, которые хранятся больше недели, можно смело удалять.
Временные автономные файлы представляют собой локальные копии недавно использовавшихся сетевых файлов, автоматически помещенных в кэш. Это дает возможность получить к ним доступ в отключенном от сети состоянии.
Автономные файлы представляют собой практически то же самое, что и временные автономные файлы, с той лишь разницей, что это локальные копии сетевых файлов, к которым явно был запрошен автономный доступ. И те, и другие могут быть смело удалены без негативных последствий для работы системы.
Служба WebClient/WebPublisher сохраняет на диске файлы, к которым был осуществлен доступ соответствующим образом. Они необходимы для увеличения быстродействия, а потому могут быть безболезненно удалены.
Одним из способов экономии места является процедура сжатия файлов, к которым давно не было обращений. При этом Windows сохраняет возможность в любой момент обратиться к данным файлам, и никакая информация не удаляется. Правда, информация об освобождаемом пространстве в данном случае будет приблизительной, поскольку файлы сжимаются с различной степенью.
Служба индексирования призвана ускорить поиск файлов на дисках. Создавая индексы существующих на диске файлов, данная служба значительно расширяет возможности обнаружения необходимой информации. Тем не менее, старые индексы могут сохраняться со времен последней операции индексирования и подлежат удалению.


Таким образом, ознакомившись с отчетом мастера очистки диска, можно определить, какие именно из обнаруженных файлов необходимо удалить. При необходимости, выделив какую-либо группу файлов из предлагаемого списка, можно просмотреть ее содержимое. Для этого достаточно нажать кнопку "Просмотр файлов". Это удобно тогда, когда из всей группы необходимо сохранить лишь несколько файлов. Их можно переписать в другую директорию, а остальные файлы - безжалостно удалить. Стоит также отметить, что состав предлагаемых для удаления компонентов зависит от типа диска. Например, для не загружаемых логических дисков, в отчете, как правило, указывается лишь содержимое Корзины и файлы каталога индексатора содержимого.
С помощью вкладки "Дополнительно" (More Options) можно освободить дополнительное место на диске, удалив неиспользуемые компоненты Windows или установленные программы. Каждый пользователь должен постараться определиться с тем, какие именно приложения он использует при работе за компьютером. Все остальное может быть удалено.
После того как определена вся информация, подлежащая удалению, можно смело нажимать OK в окне отчета мастера очистки. Все выбранные файлы будут удалены, а утилита "Очистка диска" автоматически завершит свою работу.
В заключение хочется отметить, что существует множество различных утилит, позволяющих выполнять процедуру очистки диска. Некоторые разработчики предлагают комплексные решения по оптимизации работы Windows (Norton Utilites, Fix-It Utilites, System Mechanic и т.д.). Есть и специально разработанные для этой цели программы. Тем не менее, нет смысла подробно останавливаться на их описаниях, поскольку отличия в работе таких программ не существенны. Опыт показывает, что стандартная утилита "Очистка диска" является наиболее удобным и безопасным средством для освобождения пространства на диске. Кроме того, далеко не всегда можно освободить достаточное количество места, удаляя лишь бесполезную информацию. В этом случае никакие утилиты помочь не смогут, и придется самому придумывать, за счет чего можно добыть дополнительное свободное пространство. Со временем каждый пользователь приобретает достаточно опыта для того, чтобы избавляться от лишней и бесполезной информации самостоятельно, так сказать "руками", просто удаляя ненужные файлы и не боясь при этом повредить систему. Это и есть наиболее эффективный метод поддержания порядка на компьютере. А на начальном этапе с данной проблемой всегда поможет справиться мастер очистки диска. Тем более что он всегда под рукой. Удачной уборки!


Дополнительные советы по использованию утилиты "Очистка диска":
 
Папка System Volume Information используется программой "Восстановление системы". Здесь хранятся так называемые контрольные точки восстановления. По умолчанию размер данной папки составляет 12% от объема диска - то есть, совсем немало. Можно изменить размер резервируемого места, отключить наблюдение за одним из дисков или совсем отключить функцию восстановления. Размер резервируемого места меняется в панели управления на вкладке "Восстановление системы"/"Система". Контрольные точки восстановления можно удалить, запустив программу "Очистка диска". После выбора диска необходимо перейти на вкладку "Дополнительно", затем "Восстановление системы" и нажать кнопку "Очистить". Операция позволяет весьма существенно освободить пространство на диске.
Существует возможность заранее настроить конфигурацию работы мастера очистки диска.

Для этого необходимо запускать мастер очистки из командной строки с помощью процедуры "Выполнить" в меню пуск. При этом строка будет выглядеть следующим образом:

cleanmgr [/d<диск>:] /sageset: <числовое значение от 0 до 65535>

Ключ /d определяет очищаемый диск. При отсутствии данного параметра будут очищены все диски в системе. Ключ /sageset описывает состав параметров в диалоговом окне отчета мастера очистки. Числовое значение данного ключа описывает разные наборы параметров.

К сожалению, после запуска мастера из командной строки на экране все равно появится надоедливое окно, демонстрирующее процесс очистки.
Если мастер очистки диска по каким-то причинам не угодил вам, вместо него можно прописать в систему другую утилиту. Для этого нужно запустить с помощью процедуры "Выполнить" редактор реестра Windows, набрав в командной строке regedit. Затем необходимо открыть раздел HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\ Windows\CurrentVersion\ Explorer\MyComputer. В этом разделе находятся подразделы, отведенные дисковым утилитам. Для мастера очистки диска должен быть создан подраздел CleanupPath. По умолчанию используется следующее значение: "%SystemRoot%\ system32\cleanmgr.exe /D %c" Эту строку можно поменять, указав путь к другой, собственной утилите очистки диска, со своими параметрами. Кроме того, в эту строку можно вписать параметры запуска самого мастера очистки диска, описанные пунктом выше.