2008-12-20 156 views
9

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

我做了一个谷歌搜索,发现this article,这有一个很好的解释,但我认为它不完整。我可以可靠地重现一种情况,即丢失网络连接并单击修复按钮修复问题,但运行该文章中的命令不会。

回答

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

+0

你有偶然的C代码或不知道所使用的API – Nightforce2 2011-08-18 18:22:50

+0

没有,对不起,它已经有一段时间 – EMP 2011-08-19 00:26:55

+1

发现它使用IP帮助器类HTTP! //msdn.microsoft.com/en-us/library/windows/desktop/aa365872(v=vs.85).aspx。Infact!Microsoft发布了Ipconfig的代码elf在MSDN_98的其中一个代码示例中。这是旧的,但它仍然在当前版本中使用。所有路由协议都使用位于此处的路由协议完成:http://msdn.microsoft.com/en-us/library/windows/desktop/bb530708(v=vs.85).aspx。我做出了我自己的想法,这对其他任何人来说都是有用的。 – Nightforce2 2012-01-17 00:17:18

0
ipconfig /renew 
2

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

8

似乎有一个few more things它:

  • 动态主机配置协议(DHCP)租约到期:ipconfig /续订
  • 地址解析协议(ARP)缓存刷新命令arp -d
  • 刷新NetBIOS名称缓存:使用nbtstat -R
  • NetBIOS名称发送更新:使用nbtstat-RR
  • 域名SYSTE M(DNS)缓存刷新:IPCONFIG/FLUSHDNS
  • DNS名称注册:IPCONFIG/REGISTERDNS

但有一件事,如果你有打破所以经常需要用程序修复您的网络连接,这可能不是您正在寻找的解决方案。

0

这只是完成1 api电话!

看到的Win32 API论坛新闻://comp.os.ms-windows.programmer.win32 其中代码已获得(C)

1
由lpfavreau和叶夫根,“修复列出的点

除了“网络连接也做以下。 - 重置网络设备MAC(可能是PHY)。这会导致设备重新启动其所有本地数据结构,清除它可能陷入的任何错误状态。 - 清除设备驱动程序和网络接口中的Rx/Tx数据包队列,将其更新为旧的排队的数据包。

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:\网络connection.log表示文件的地址,其中报告将被存储

netsh int ip ...命令允许您重置TCP/IP。

在Windows XP Service Pack 2中,你可以使用:

netsh winsock reset catalog

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

1

我体验到WiFi连接,从时间下降到时候我的XP中,没有任何明显的理由,而解决这一问题的唯一方法是右键点击系统托盘上和修复WiFi连接图标。

得到这个命令行完成的,我按照这篇文章的步骤和工作对我来说:http://wlanbook.com/enable-disable-wireless-card-command-line/

1

什么工作对我来说:

netsh interface show interface 

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

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

这对我有效。

创建一个批处理文件(我称为mine netrepair.bat)并将其放置在您有执行权限的目录中。使用记事本创建文件。

类型文件

IPCONFIG /在以下行更新 ARP -d * NBTSTAT -R NBTSTAT -RR IPCONFIG/FLUSHDNS IPCONFIG/REGISTERDNS

然后保存并关闭。

打开CMD端子作为管理员,导航到其上netrepair.bat被保存,然后在命令行键入

netrepair.bat

的文件夹。

就是这样。

参考http://support.microsoft.com/kb/289256对于什么样的命令做

-1

这里的解释是,将执行netsh接口设置界面中的“以太网”关闭“后跟”启用任务管理器的XML文件(将其导入到任务管理器) ?”,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>