Восстановление сетевых подключений программно/из командной строки

Кто-нибудь точно знает, что делает Windows XP, когда вы нажимаете «Восстановить» при сетевом подключении? Я хотел бы сделать то же самое программно или из командной строки.

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


person EMP    schedule 20.12.2008    source источник


Ответы (11)


Спасибо, ребята, кажется, я разобрался. Действия, описанные в статье MS KB, опубликованной lpfavreau, почти< /em> завершено. Это то, что я пробовал, и это не сработало. Однако, если я сначала сделаю ipconfig /release, то, похоже, это сработает. Я подозреваю, что кнопка «Восстановить» делает это без явного документирования. В моем конкретном случае мне также пришлось очистить маршруты («маршрут -f»). Итак, команды, которые я в итоге выполнил:

route -f
ipconfig /release
ipconfig /renew
arp -d *
nbtstat -R
nbtstat -RR
ipconfig /flushdns
ipconfig /registerdns

Я также нашел некоторый код C для вызова фактической функции «Восстановить соединения», хотя я не тестировал ее - см. последнее сообщение здесь.

person EMP    schedule 20.12.2008
comment
Нет, извините, это было давно. - person EMP; 19.08.2011
comment
Нашел! Он использует вспомогательный класс IP msdn .microsoft.com/en-us/library/windows/desktop/. Фактически! Microsoft выпустила код самого Ipconfig в одном из примеров кода для MSDN_98. Он старый, но все еще используется в текущем издании. Все протоколы маршрутизации выполняются с использованием протокола маршрутизации, расположенного здесь: msdn.microsoft.com/en-us/library/windows/desktop/. Я сделал свою собственную мысль, что это будет полезно для всех, кто ищет это. - person Nightforce2; 17.01.2012

Кажется, есть еще несколько вещей:

  • Продление аренды протокола динамической конфигурации хоста (DHCP): ipconfig /renew
  • Кэш протокола разрешения адресов (ARP) очищается: arp -d
  • Перезагрузка кэша имен NetBIOS: nbtstat -R
  • Отправлено обновление имени NetBIOS: nbtstat -RR
  • Кэш системы доменных имен (DNS) очищен: ipconfig /flushdns
  • Регистрация DNS-имени: ipconfig /registerdns

Одна вещь, однако, если у вас есть соединение, которое разрывается так часто, что вам нужно программно восстановить вашу сеть, это может быть не то решение, которое вы ищете.

person lpfavreau    schedule 20.12.2008

Для этого есть команда из командной строки.

Цитирование http://en.kioskea.net/faq/sujet-848-windows-xp-repairing-the-network-connection-using-command-line:

В Windows XP есть небольшая функция, позволяющая восстанавливать сетевое соединение. Перейдите к параметрам «Сетевые подключения» на панели управления («Панель управления» / «Сетевые подключения»), щелкните правой кнопкой мыши нужное сетевое подключение и выберите вариант восстановления.

Эту же команду можно запустить с помощью утилиты Netsh в следующей командной строке:

netsh int ip reset c:\network-connection.log

c:\network-connection.log представляет собой адрес файла, в котором будут храниться отчеты.

Команда netsh int ip ... позволяет сбросить TCP/IP.

С пакетом обновления 2 для Windows XP вы можете использовать:

netsh winsock reset catalog

Сброс сокета, который управляет TCP/IP. Это можно использовать для решения сетевых проблем (проблемы с браузером, проблемы, связанные с IP-адресом и т. д.).

person Johnny    schedule 13.01.2010
comment
Спасибо. Я больше не могу это надежно проверить, так как исходная проблема больше не возникает, но я не знал об этом, и это звучит многообещающе. - person EMP; 14.01.2010
comment
Кажется, что оба эти действия требуют перезагрузки компьютера, а действие восстановления в пользовательском интерфейсе - нет. - person Zitrax; 05.03.2014

В случае беспроводного подключения он также отключает и снова включает сетевой адаптер. Я подозреваю, что что-то подобное отсутствует в статье.

person chaos    schedule 20.12.2008

Помимо пунктов, перечисленных lpfavreau и Evgeny, сетевое соединение «Ремонт» также выполняет следующие действия. - Сбросьте MAC-адрес сетевого устройства (и, возможно, PHY). Это заставляет устройство повторно инициировать все свои локальные структуры данных, очищая любые ошибки, в которых оно могло застрять. - Очистить очереди пакетов Rx/Tx в драйвере устройства и сетевом интерфейсе, очищая его от любых старых очередей. пакеты.

person Harty    schedule 31.12.2008

Я сталкиваюсь с Wi-Fi-соединением, которое время от времени прерывается на моем XP без какой-либо видимой причины, и единственный способ исправить это — щелкнуть правой кнопкой мыши значок Wi-Fi-соединения на панели задач и восстановить.

Чтобы сделать это из командной строки, я выполняю шаги, описанные в этой статье, и у меня это работает: http://wlanbook.com/enable-disable-wireless-card-command-line/

person nyet    schedule 07.08.2012

Что сработало для меня:

netsh interface show interface

чтобы показать имя интерфейса, которое для меня было «Ethernet 2», а затем:

netsh interface set interface "Ethernet 2" DISABLED
netsh interface set interface "Ethernet 2" ENABLED
person Zitrax    schedule 05.03.2014

Это просто сделано с 1 вызовом API!

см. на форуме Win32 API news://comp.os.ms-windows.programmer.win32, где был указан код (C)

person Community    schedule 20.12.2008

Самое близкое, что я мог найти по этому поводу, было. http://msdn.microsoft.com/en-us/library/ff358632(v=vs.85).aspx

person Nightforce2    schedule 14.04.2011

Это сработало для меня.

Создайте пакетный файл (я назвал его netrepair.bat) и поместите его в каталог, где у вас есть права на выполнение. Используйте блокнот для создания файла.

введите следующие строки в файл

ipconfig /renew arp -d * nbtstat -R nbtstat -RR ipconfig /flushdns ipconfig /registerdns

затем сохраните и закройте.

Откройте терминал cmd от имени администратора, перейдите в папку, в которой сохранен netrepair.bat, и введите

netrepair.bat

в командной строке.

Вот и все.

Обратитесь к http://support.microsoft.com/kb/289256, чтобы узнать, какие команды делать

person user3514398    schedule 10.04.2014

Вот XML-файл диспетчера задач (импортируйте его в диспетчер задач), который будет выполнять интерфейс настройки интерфейса netsh «Ethernet» DISABLED», а затем «ENABLED» через 5 секунд после пробуждения.

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2015-01-15T10:19:28.1634612</Date>
    <Author>MACHINE\user</Author>
  </RegistrationInfo>
  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="System"&gt;&lt;Select Path="System"&gt;*[System[Provider[@Name='Microsoft-Windows-Power-Troubleshooter'] and EventID=1]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
      <Delay>PT5S</Delay>
    </EventTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Windows\System32\netsh.exe</Command>
      <Arguments>interface set interface "Ethernet" DISABLED</Arguments>
    </Exec>
    <Exec>
      <Command>C:\Windows\System32\netsh.exe</Command>
      <Arguments>interface set interface "Ethernet" ENABLED</Arguments>
    </Exec>
  </Actions>
</Task>
person Phill Tejada    schedule 15.01.2015
comment
@WayneEllery также похоже, что он включает реальный ответ. - person user253751; 16.01.2015
comment
Ok. Не уверен, что произошло. я удалил свой комментарий - person Wayne Ellery; 16.01.2015