当您在网络连接上单击“修复”时,有谁知道 Windows XP 究竟做了什么?我想以编程方式或从命令行执行相同的操作。
我用谷歌搜索,找到了这篇文章,有很好的解释,但我认为它并不完整。我可以可靠地重现我失去网络连接并单击修复按钮修复问题的情况,但运行该文章中的命令不能。
当您在网络连接上单击“修复”时,有谁知道 Windows XP 究竟做了什么?我想以编程方式或从命令行执行相同的操作。
我用谷歌搜索,找到了这篇文章,有很好的解释,但我认为它并不完整。我可以可靠地重现我失去网络连接并单击修复按钮修复问题的情况,但运行该文章中的命令不能。
谢谢各位,我想我明白了。lpfavreau 发布的 MS 知识库文章中的步骤几乎完成了。这就是我尝试过的,但没有奏效。但是,如果我ipconfig /release
先这样做,那么它似乎可以工作。我怀疑“修复”按钮在没有明确记录的情况下会这样做。对于我的特殊情况,我还必须清除路线(“route -f”)。所以,我最终运行的命令是:
route -f
ipconfig /release
ipconfig /renew
arp -d *
nbtstat -R
nbtstat -RR
ipconfig /flushdns
ipconfig /registerdns
我还找到了一些 C 代码来调用实际的“修复连接”功能,尽管我还没有测试过 -请参阅此处的最后一篇文章。
似乎还有一些事情要做:
- 更新动态主机配置协议 (DHCP) 租约:ipconfig /renew
- 地址解析协议 (ARP) 缓存被刷新:arp -d
- 重新加载 NetBIOS 名称缓存:nbtstat -R
- 发送 NetBIOS 名称更新:nbtstat -RR
- 刷新域名系统 (DNS) 缓存:ipconfig /flushdns
- DNS 名称注册:ipconfig /registerdns
但有一件事,如果您的连接经常中断,您需要以编程方式修复您的网络,这可能不是您正在寻找的解决方案。
有一个命令可以从命令行执行此操作。
引用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 地址相关问题等......)
在无线连接的情况下,它还会禁用和重新启用网络适配器。我怀疑文章中缺少类似的内容。
除了 lpfavreau 和 Evgeny 列出的要点外,“修复”网络连接还执行以下操作。- 重置网络设备 MAC(可能还有 PHY)。这会导致设备重新启动其所有本地数据结构,清除它可能陷入的任何错误情况。 - 清除设备驱动程序和网络接口中的 Rx/Tx 数据包队列,清除任何旧队列数据包。
我遇到了wifi连接,在我的XP盒子上不时掉线,没有任何明显的原因,解决这个问题的唯一方法是右键单击系统托盘上的wifi连接图标并修复。
要从命令行完成此操作,我按照本文中的步骤操作,它适用于我:http ://wlanbook.com/enable-disable-wireless-card-command-line/
什么对我有用:
netsh interface show interface
显示对我来说是“以太网2”的接口名称,然后:
netsh interface set interface "Ethernet 2" DISABLED
netsh interface set interface "Ethernet 2" ENABLED
ipconfig /renew
只需 1 次 api 调用即可完成!
在 Win32 api 论坛 news://comp.os.ms-windows.programmer.win32 上查看代码已给出的位置 (C)
这对我有用。
创建一个批处理文件(我称为我的 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
这是一个任务管理器 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><QueryList><Query Id="0" Path="System"><Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Power-Troubleshooter'] and EventID=1]]</Select></Query></QueryList></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>