10

当您在网络连接上单击“修复”时,有谁知道 Windows XP 究竟做了什么?我想以编程方式或从命令行执行相同的操作。

我用谷歌搜索,找到了这篇文章,有很好的解释,但我认为它并不完整。我可以可靠地重现我失去网络连接并单击修复按钮修复问题的情况,但运行该文章中的命令不能。

4

12 回答 12

20

谢谢各位,我想我明白了。lpfavreau 发布的 MS 知识库文章中的步骤几乎完成了。这就是我尝试过的,但没有奏效。但是,如果我ipconfig /release先这样做,那么它似乎可以工作。我怀疑“修复”按钮在没有明确记录的情况下会这样做。对于我的特殊情况,我还必须清除路线(“route -f”)。所以,我最终运行的命令是:

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

我还找到了一些 C 代码来调用实际的“修复连接”功能,尽管我还没有测试过 -请参阅此处的最后一篇文章

于 2008-12-20T07:31:08.833 回答
8

似乎还有一些事情要做

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

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

于 2008-12-20T06:29:57.680 回答
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 地址相关问题等......)

于 2010-01-13T10:21:55.413 回答
2

在无线连接的情况下,它还会禁用和重新启用网络适配器。我怀疑文章中缺少类似的内容。

于 2008-12-20T06:22:56.537 回答
1

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

于 2008-12-31T06:57:43.433 回答
1

我遇到了wifi连接,在我的XP盒子上不时掉线,没有任何明显的原因,解决这个问题的唯一方法是右键单击系统托盘上的wifi连接图标并修复。

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

于 2012-08-07T15:28:15.343 回答
1

什么对我有用:

netsh interface show interface

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

netsh interface set interface "Ethernet 2" DISABLED
netsh interface set interface "Ethernet 2" ENABLED
于 2014-03-05T10:00:00.277 回答
0
ipconfig /renew
于 2008-12-20T06:22:54.683 回答
0

只需 1 次 api 调用即可完成!

在 Win32 api 论坛 news://comp.os.ms-windows.programmer.win32 上查看代码已给出的位置 (C)

于 2008-12-20T11:46:00.160 回答
0

我能找到的最接近的东西是。 http://msdn.microsoft.com/en-us/library/ff358632(v=vs.85).aspx

于 2011-04-14T15:12:02.750 回答
0

这对我有用。

创建一个批处理文件(我称为我的 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

于 2014-04-10T08:25:06.973 回答
-1

这是一个任务管理器 XML 文件(将其导入任务管理器),它将在唤醒 5 秒后执行 netsh 接口设置接口“以太网”禁用”,然后执行“启用”。

<?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>
于 2015-01-15T17:45:00.123 回答