К основному контенту

Как я устранил ошибку с HAL.DLL после редактирования разделов диска

Предыстория

Есть компьютер. На нем установлена Windows XP - одна и единственная ОС на жестком диске (т. е. грузится она только файлом boot.ini). До этого не раз делились "перетасовывались" разделы на жестком диске. В итоге получилось так, что Windows встала в раздел под буквой F:\.
Так получилось, что, загрузившись с Live USB Sergei Strelec и запустив AOMEI Partition Assistant, я обнаружил, что у меня целых 50 гигов нераспределенной области на жестком диске (а мне как раз они были не лишними), поэтому я расширил раздел диска D:, включив в его объем ту самую нераспределенную область. Помимо этого, я удалил один из разделов.

И вот здесь произошел ключевой момент: разделов на жестком диске стало МЕНЬШЕ.

При попытке загрузить Windows XP я столкнулся с ошибкой:

Не удается запустить windows из-за испорченного или отсутствующего файла hal.dll


Перерыв информацию в гугле, я попробовал:


  1. Через Консоль восстановления распаковать hal.dll с дистрибутива в папку Windows\System32 командой expand
  2. Восстанавливал ntoskrnl.exe командой expand с дистрибутива из \i386\ntoskrnl.ex_ и \i386\ntkrnlmp.ex_
  3. Пробовал восстановить файл загрузки командой bootcfg /rebuild, однако консоль не нашла установленных ОС.
  4. Проверял жесткий диск командой chkdsk C: /F
  5. Cканировал целостность файлов sfc /scannow
  6. Сканировал жесткий диск на битые сектора
  7. Перезагружал компьютер
  8. Пытался выбрать "Последнюю удачную конфигурацию", "Обычную загрузку", а также безуспешно пытался войти в "Безопасный режим" (отображается все та же ошибка hal.dll).
  9. Порядок загрузки HDD не менял, т. к. в компьютере - единственный жесткий диск с несколькими разделами.

Решение проблемы:

Оказалось, что дело было в файле boot.ini: он содержал следующую строчку:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(4)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect
А если посчитать разделы в AOMEI Partition Assistant, то получается, что Windows находится не в 4-м, а в 3-м разделе (см. скриншот):

Поэтому я поменял это число на "3":
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect
Но сразу это не помогло. Как выяснилось, нужный boot.ini расположен не на F:, а на 300 МБ-ном C: разделе (который остался по-видимому от когда-то установленной Windows 7), поэтому я изменил также boot.ini в разделе C:

И - о, чудо! - Windows XP запустилась. И опять не все так гладко. Появилась 3-я проблема: после загрузки Windows XP, она напрочь отказывалась видеть USB клавиатуру и мышь (при этом в BIOS'е клавиатура и мышь (BIOS - современный с поддержкой мыши) нормально работали). Более того, слетел драйвер Nvidia, поэтому отображение было с разрешением 800x600. Многочисленные перезагрузки не помогли. Попробовал сбросить настройки BIOS'а, но это не помогло. Глядя на увеличенные низким разрешением элементы экрана, я предположил, что проблема заключается в каком-то неудачном запуске Безопасного режима на момент ошибки hal.dll, поэтому решил войти в Безопасный режим. Компьютер отобразил загрузку системных файлов, но потом перезагрузился. Попробовал загрузиться в "Безопасный режим с поддержкой командной строки" - загрузился!

Загуглил проблему с клавиатурой и мышью, и выяснил, что дело может быть в реестре в следующих ветках:
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}
Однако, с ключами и параметрами было все в порядке.

Толком ничего не сделав в безопасном режиме, перезагрузился и загрузился снова в обычном режиме: клавиатура и мышь ЗАРАБОТАЛИ!
А вот драйвер NVidia не установился. В Диспетчере устройств был только "VGA графический адаптер" с восклицательным знаком. Попробовал переустановить драйвер с диска, однако программа установки пишет "Не найдено совместимых устройств". Перезагрузил компьютер еще раз, высветился стандартный Windows'овский "Мастер установки оборудования", а в трее загорелось уведомление о новом найденном устройстве "Nvidia GeForce GT 450". Через "Мастер установки оборудования" указал папку на компакт-диске, где находится запрашиваемый файл (nvinfo.pb) - драйвер установился. Перезагрузил систему - видеокарта заработала.




Комментарии

Самое просматриваемое

Значок сети с красным крестиком, хотя Интернет работает. Диагностика неполадок не выявляет проблему

Мне помогло следующее ( Windows 7 ): Win + R > regedit Идем в HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify Удаляем вот эти параметры: IconStreams, LastAdvertisement, PastIconsStream, PromotedIconCache, UserStartTime Открываем Диспетчер задач и переходим на вкладку Процессы Завершаем все процессы " explorer.exe " Переходим на вкладку Приложения Нажимаем кнопку " Новая задача ", пишем " explorer.exe " и нажимаем OK Теперь значок должен отображаться нормально. Windows 10 (ответ от пользователя Cox ): проблема в одном ключе реестра: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet Значение DWORD EnableActiveProbing = 0 и вызывало такое поведение. Оно отключило соответствующий тест Windows на ручной установке DNS адресов. Когда значение реестра было установлено на EnableActiveProbing = 1 , после перезагрузки можно было вручную вводить адрес...

Где Vegas Pro хранит автосохраненные проекты?

12 -ая версия, например, хранит их здесь: %USERPROFILE%\AppData\Local\Sony\Vegas Pro\12.0 16 -ая хранит проекты по тому же пути, только немного в другой папке: %USERPROFILE%\AppData\Local\VEGAS Pro\16.0 

Сеть отсутствует или не запущена. Решение

Запустить командную строку от имени администратора: Пуск > в строке поиска вписать cmd , нажать на иконку правой кнопкой мыши выбрать « Запустить от имени администратора ». В командную строку скопируйте sc config mrxsmb10 start= demand и нажмите Enter . Нажимаем Win+R и вводим services.msc Находим службу “ Рабочая станция ” и нажав правой кнопкой мыши выбираем пункт « Запустить ». Примечание: служба не запустится , если не выполнить пункт 2 . Запуск службы лучше поставить на " Автоматически ". Вот и все. Источник:  http://studenthelper.hol.es/%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0/%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B-%D1%81%D0%B5%D1%82%D1%8C-%D0%BE%D1%82%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82-%D0%B8/

Как удалить виртуальный дисковод, созданный UltraISO из "Проводника"?

Не смотря на то, что в Windows 10 уже давно есть поддержка открытия образов дисков ( Открыть с помощью > Проводник ), некоторые типы образов она не открывает (например, образы с играми для  PS1 ). Поэтому приходится прибегать к использованию сторонних программ, популярной из которых считается UltraISO (благодаря простому интерфейсу, малому размеру и нетребовательности к ресурсам ПК). Но даже у таких простых простых программ порой случаются глюки. И проблема чаще всего связана с виртуальным приводом. Проблема В моем же случае, у меня на компьютере "застрял" виртуальный дисковод, который занял букву временно отключенного внешнего HDD . Все бы ничего, но на нем ( HDD ) располагались видеофайлы материала, который я в данный момент монтирую, и на которые (с учетом исходной буквы диска) прописаны ссылки в файле проекта монтажки. Поэтому, самым простым вариантом на мой взгляд было вернуть внешнему диску исходную букву (которую занял виртуальный привод), а виртуальному просто на...

Не запускается установка из-за iKernel.exe (installshield engine could not be launched)

Нажать Win+R В окне " Выполнить " ввести: services.msc и нажать Enter Включить службу " Windows Installer " ( Запустить ее и поставить на " Авто ") Все. P.S. Еще (как вариант): Зайти в  C:\Program Files\Common Files\InstallShield\engine\6\Intel 32 Взять оттуда  IKernel.exe и поместить его в папку с инсталлятором. Запустить инсталлятор. Либо кликнуть сначала на  IKernel.exe , а потом запустить инсталлятор.