Кое-что про устройство Windows

Короче, описывать все мои приключения с системой мне как-то не хочется — слишком много скукотищи в этом. Расскажу только о некоторых моментах. Ещё раз отмечу, что без Лёши Туганова я бы просто не догадался о возможности большинства из этих манипуляций.

В реестре ли проблема

Чтобы выяснить, в реестре ли проблема, достаточно подменить свой имеющийся реестр (файлы в C:\WINNT\system32\config) тем, который система сохранила на всякий случай сразу после установки (файлы в C:\WINNT\repair), не забыв, конечно, предварительно сохранить сегодняшний конфиг. Проще всего это сделать, переименовав config в config.new.

Такая подмена реестра на старый оказывается совершенно безболезненной: система спокойно загружается, воспринимая произошедшее так, будто вы просто разом воткнули кучу нового оборудования и для него надо установить драйверы. Это всё можно просто проигнорировать. На то, что в папке Program Files лежит куча «новых» папок, системе наплевать; как, впрочем, и на кучу «новых» dll’ок в system32.

Я просто зашёл в «Сетевые подключения» и увидел, что там по-прежнему не было никаких соединений, и новые не создавались. И службы многочисленные также не работали.

Но это был только «общий» реестр, а ведь есть ещё «личный» (HKEY_CURRENT_USER). Он лежит в Documents & Settings в файле ntuser.dat. С ним была проделана аналогичная операция подмены (с сохранением резервной копии, конечно); тут в качестве донора использовался Defaut User — это пользовательский профиль, на основе которого создаются новые профили. Это также ничего не дало.

Таким образом, был сделан важный вывод о том, что проблема не в реестре, а в чём-то другом.

Папка system32 и комбинаторика

Следующим этапом стало «лечение» папки system32. Оно заключалось в переименовывании папки в system33 и копировании «здоровой» system32 с ноутбука. В этой скопированной с ноутбука папке реестр был заменён на мой, который из папки repair.

Удивительно, что система вообще запустилась после такого, но она запустилась! И выдала невероятное количество ошибок, заключающихся в ненайденности каких-то dll’ок — оно и понятно, в реестре всякие драйверы прописаны, а в ноутбучной папке их нет.

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

Осталось только правильно скомбинировать все части, чтобы получить здоровую систему. Рецепт получился примерно такой:

  1. Берём system32 с ноутбука.
  2. Добиваем недостающими файлами из system33, чтобы все нужные dll’ки были.
  3. Берём свой HKEY_CURRENT_USER, резервная копия которого у нас есть.
  4. Берём свой «общий» реестр, который config.new (то есть, он должен в результате оказаться system32/config).
  5. Карри и майонез по вкусу.
  6. Перезагружаемся.

Система как новенькая. Если не считать одной мелочи.

Служба Windows Installer

Почему-то после этих манипуляций система у меня запустилась, сказав, что произошли сбои при запуске одной или нескольких служб. По данным eventlog’а, это была одна служба — Windows Installer.

Ковыряние в интернете показало, что починить слетевший Windows Installer можно, написав следующую команду: msiexec /regserver.

Такие дела.

Дальше
3 комментария
Oleg Andreev 2007

Спасибо, очень познавательно. Только все равно непонятно кто был виноват и как его найти.

Weasel 2007

А диск всё же стоит проверить. Больше всего похоже на какое-то повреждение диска, после чего тот потерял файл с важной dll. У меня такое было, правда после этого виндоуз вообще не загрузился. Тебе повезло.

Переустановка Windows в тот же каталог, как тебе в комментариях советовали, видимо помогла бы :)

Илья Бирман 2007

Checkdisk считает, что всё ОК; S.M.A.R.T. тоже. Что же ещё сделать?

Переустановка Windows в тот же каталог сдохла на середине со словами «Продолжение установки невозможно. Это неустранимая ошибка» (оптимистично так). В результате система оставалась в таком недоустановленном состоянии и вообще ничего не работало. От этого снова спасла подстановка ##system32## с ноутбука и т. д. ;-)

Alfred E. Riks 2007

Надеюсь что у меня такая проблема не возникнет, но на всякий случай решил уточнить... Карри можно заменить на хмели-сунели?

Мои книги