以编程方式/从命令行“修复”网络连接

时间:2008-12-20 06:13:56

标签: winapi networking windows-xp tcp

当您点击网络连接上的“修复”时,是否有人确切知道Windows XP的功能?我想以编程方式或从命令行执行相同的操作。

我进行了Google搜索并找到了this article,这有一个很好的解释,但我不认为它是完整的。我可以可靠地重现丢失网络连接并单击“修复”按钮修复问题的情况,但是运行该文章中的命令却没有。

12 个答案:

答案 0 :(得分:20)

谢谢,伙计们,我想我已经明白了。 MS KB article posted by lpfavreau中的步骤几乎完成。这就是我尝试过的,但它没有用。但是,如果我先ipconfig /release,那么它似乎有效。我怀疑“修复”按钮会在没有明确记录的情况下执行此操作。对于我的特殊情况,我还必须清除路线(“路线-f”)。所以,我最终运行的命令是:

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

我还发现了一些C代码来调用实际的“修复连接”功能,虽然我还没有测试过它 - see last post here

答案 1 :(得分:8)

似乎它有few more things

  
      
  • 续订动态主机配置协议(DHCP)租约:ipconfig / renew
  •   
  • 刷新地址解析协议(ARP)缓存:arp -d
  •   
  • 重新加载NetBIOS名称缓存:nbtstat -R
  •   
  • 发送NetBIOS名称更新:nbtstat -RR
  •   
  • 刷新域名系统(DNS)缓存:ipconfig / flushdns
  •   
  • DNS名称注册:ipconfig / registerdns
  •   

但有一点,如果您经常断开连接,则需要以编程方式修复网络,这可能不是您正在寻找的解决方案。

答案 2 :(得分:5)

有一个命令可以从命令行执行此操作。

引用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 Service Pack 2,您可以使用:

     

netsh winsock reset catalog

     

重置管理TCP / IP的套接字。这可用于处理网络问题(浏览器问题,IP地址相关问题等)

答案 3 :(得分:2)

在无线连接的情况下,它还会禁用并重新启用网络适配器。我怀疑这篇文章中缺少的东西。

答案 4 :(得分:1)

除了lpfavreau和Evgeny列出的点之外,“修复”网络连接也会执行以下操作。 - 重置网络设备MAC(可能还有PHY)。这会导致设备重新启动其所有本地数据结构,清除可能卡在其中的任何错误情况。 - 清除设备驱动程序和网络接口中的Rx / Tx数据包队列,清除任何较旧的排队数据包。

答案 5 :(得分:1)

我经历了wifi连接,不时在我的XP机箱上丢失,没有任何明显的原因,解决这个问题的唯一方法是右键单击系统托盘上的wifi连接图标并进行修复。

要从命令行完成此操作,我按照本文中的步骤操作,它适用于我:http://wlanbook.com/enable-disable-wireless-card-command-line/

答案 6 :(得分:1)

对我有用的是什么:

netsh interface show interface

显示对我来说是“Ethernet 2”的接口名称,然后是:

netsh interface set interface "Ethernet 2" DISABLED
netsh interface set interface "Ethernet 2" ENABLED

答案 7 :(得分:0)

ipconfig /renew

答案 8 :(得分:0)

只需1次api通话即可完成!

请参阅Win32 api论坛新闻://comp.os.ms-windows.programmer.win32 代码已经给出(C)

答案 9 :(得分:0)

答案 10 :(得分:0)

这对我有用。

创建批处理文件(我称之为net 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

答案 11 :(得分:-1)

这是一个任务管理器XML文件(将其导入任务管理器),它将执行netsh接口集接口"以太网" DISABLED"然后在醒来后5秒钟启动#34; ENABLED"

<?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>