пятница, 24 мая 2013 г.

Восстановление стека TCP/IP в Windows XP

Мне статья помогла после того, как в декабре 2012 года, AVAST решил, что файл tcpip.sys - страшный и ужасный вирус.Сегодня нашел ее в закладках, решил сохранить на всякий случай :)
 
Парочка решений, как восстановить систему с аналогичной проблемой, есть тут и тут.

Далее - одна большая цитата от http://milleniumbug.livejournal.com/.


"Возможно, вы сталкивались с вирусами/троянами, после лечения которых перестает нормально работать сеть («компьютер не выходит в интернет»). Как человек, угробивший кучу времени на борьбу с этим замечательным явлением на нескольких компьютерах, считаю нужным записать рецепт.

Как может проявляться проблема:
  • Команда ipconfig выдает ошибку.
  • Не работает получение адреса по dhcp (команда ipconfig /renew).
  • «Странные знаки» вместо IP-адреса в выводе команды ping.
  • Касперский при запуске выдает ошибки типа «Сбой при запуске монитора HTTP-трафика».
  • ActiveSync при запуске выдает ошибку типа «TCP/IP network transport is not installed».
  • В диспетчере устройств при включенном «Показать скрытые устройства» в разделе «Драйверы устройств не Plug and Play» драйвер протокола TCP/IP не виден или показан как отключенный и отображается сообщение об ошибке.
Могут, естественно, быть и другие симптомы.

Как можно бороться:
Внимание! Текст писался давно и про Windows XP. Вполне допускаю, что в более современных версиях названия папок, файлов, кнопок в окнах и прочего отличаются. Более того, эти рецепты могут вообще не подойти. Используйте с умом, пожалуйста :)

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

Если у каких-то сетевых соединений IP-адреса назначены вручную, выписываем их или делаем скриншоты. На следующем шаге эти настройки скорее всего слетят.

Даем команду netsh int ip reset, перезагружаемся. Помогло? Замечательно. Нет? Едем дальше.

Даем команду netsh winsock reset, перезагружаемся. Это может не работать на Windows до SP2. После этого действия может слететь интеграция в стек TCP/IP антивирусов, фаерволлов, клиентов для проксей. Правится или повторной установкой нужных галок в настройках этих программ, или их переустановкой.

Простые методы закончились :) Возможно, поврежден или остутствует файл tcpip.sys. Восстановить его можно командой expand X:\i386\tcpip.sy_ c:\windows\system32\tcpip.sys, где X: — буква диска с дистрибутивом. После восстановления перезагружаемся.

Возможно, дело в каких-то еще системных файлах, потертых или измененных. Запустить проверку с восстановлением из дистрибутива по необходимости можно командой sfc /scannow. Мне не помогло, работало долго, но ошибок никаких не нашло.

Видел рекомендацию воспользоваться софтинкой http://www.snapfiles.com/get/winsockxpfix.html — мне не помогло, но «десять баксов-то не лишние» — вдруг кому поможет. Софтинка небольшая, около мегабайта весит.

Можно попробовать заново установить протокол TCP/IP. В свойствах подключения к локальной сети на вкладке Общие щелкаем Установить -> Протокол -> Добавить. В окне Выбор сетевых протоколов щелкаем Установить с диска, вводим путь C:\windows\inf, нажимаем ОК. Выделяем Протокол Интернета (TCP/IP), нажимаем ОК. Проверяем настройки IP, перезагружаемся.

Можно попробовать в диспетчере устройств удалить и установить заново сетевую карту. Я не пробовал.

Полная переустановка TCP/IP (собственно, статья скопирована из-за него :) ):
Если ничего из вышеперечисленного не восстановило работоспособность, осталась еще одна процедура, помогающая избежать переустановки Windows. Кстати, переустановка «поверх», с сохранением настроек, программ и документов, может не устранить проблему. Пробовал, сталкивался.

Итак, отращиваем бороду, покупаем бубен, надеваем толстые очки и засучиваем рукава.

Внимание! Текст писался давно и про Windows XP. Вполне допускаю, что в более современных версиях названия папок, файлов, кнопок в окнах и прочего отличаются. Более того, эти рецепты могут вообще не подойти. Используйте с умом, пожалуйста :)

  1. Открываем в блокноте файл c:\windows\inf\nettcpip.inf.
  2. Находим секцию [MS_TCPIP.PrimaryInstall]..
  3. В записи Characteristics = 0xA0 замеяем 0xA0 на 0x80.
  4. Сохраняем, закрываем.
  5. Открываем Сетевые подключения, там открываем свойства Подключения к локальной сети.
  6. На вкладке Общие щелкаем Установить -> Протокол -> Добавить.
  7. В окне Выбор сетевых протоколов щелкаем Установить с диска.
  8. Вводим путь C:\windows\inf, нажимаем ОК.
  9. Выделяем Протокол Интернета (TCP/IP), нажимаем ОК. Теперь в свойстве подключения стало возможно снести TCP/IP.
  10. Выделяем Протокол Интернета (TCP/IP), нажимаем кнопку Удалить, затем ОК.
  11. Запускаем regedit, удаляем ветки реестра HKLM\System\CurrentControlSet\Services\Winsock и HKLM\System\CurrentControlSet\Services\Winsock2.
  12. Перезагружаемся.
  13. В файле c:\windows\inf\nettcpip.inf меняем обратно 0x80 на 0xA0, сохраняем, закрываем.
  14. Открываем Сетевые подключения, там открываем свойства Подключения к локальной сети.
  15. На вкладке Общие щелкаем Установить -> Протокол -> Добавить.
  16. Выделяем Протокол Интернета (TCP/IP), нажимаем ОК.
  17. При необходимости восстанавливаем настройки адресов IP, перезагружаемся. TCP/IP работает.

Предпоследний пункт может не сработать, выдав «расширенную ошибку». Возможно, если не менять обратно файл nettcpip.inf, этой ошибки не возникнет. Дело в том, что системная база безопасности почему-то оказывается в неправильном состоянии. Как быть в этом случае? Для проверки сначала запускаем команду:

esentutl /g c:\windows\security\Database\secedit.sdb

Если в выводе между строчками Checking database integrity и Integrity check successful нет никаких сообщений, что что-то не так, значит с базой все в порядке. У меня было сообщение типа This operation may find that this database is corrupt.

Пробуем восстановление базы (у меня не сработало):

esentutl /r c:\windows\security\Database\secedit.sdb

Делаем ремонт базы:

esentutl /p c:\windows\security\Database\secedit.sdb

После этого запуск с ключом /g должен показать, что база в порядке, и TCP/IP установится. Эти манипуляции с базой безопасности могут что-то такое сделать с групповыми политиками, так что если вы ими пользуетесь, проверьте, все ли там в порядке.

Надеюсь, все написанное здесь вам не пригодится, а если все-таки пригодится, то сэкономит немало времени и нервов. "

Оригинал тут: http://milleniumbug.livejournal.com/9703.html?nojs=1

Комментариев нет: