«Восстановление» сетевых подключений программно / из командной строки - PullRequest
9 голосов
/ 20 декабря 2008

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

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

Ответы [ 12 ]

20 голосов
/ 20 декабря 2008

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

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

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

8 голосов
/ 20 декабря 2008

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

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

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

5 голосов
/ 13 января 2010

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

Цитирование 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.

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

netsh winsock reset catalog

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

2 голосов
/ 20 декабря 2008

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

1 голос
/ 05 марта 2014

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

netsh interface show interface

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

netsh interface set interface "Ethernet 2" DISABLED
netsh interface set interface "Ethernet 2" ENABLED
1 голос
/ 07 августа 2012

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

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

1 голос
/ 31 декабря 2008

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

0 голосов
/ 15 января 2015

Вот XML-файл диспетчера задач (импортируйте его в диспетчер задач), который будет выполнять интерфейс набора сетевых интерфейсов "Ethernet" ОТКЛЮЧЕН ", а затем" ВКЛЮЧЕН "через 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>
0 голосов
/ 10 апреля 2014

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

Создайте командный файл (я назвал мой 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 для объяснения того, что команды делают

0 голосов
/ 14 апреля 2011

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

...