2008-12-20 11 views
9

¿Alguien sabe exactamente qué hace Windows XP cuando hace clic en "Reparar" en una conexión de red? Me gustaría hacer lo mismo programáticamente o desde una línea de comando."Reparar" las conexiones de red mediante programación/desde la línea de comandos

Hice una búsqueda en Google y encontré this article, que tiene una buena explicación, pero no creo que esté completa. Puedo reproducir de manera confiable una condición en la que pierdo conectividad de red y al hacer clic en el botón Reparar corrige el problema, pero no funciona ejecutar los comandos en ese artículo.

Respuesta

20

Gracias, chicos, creo que lo descubrí. Los pasos en el MS KB article posted by lpfavreau son casi completos. Eso es lo que intenté y no funcionó. Sin embargo, si hago ipconfig /release primero, parece que funciona. Sospecho que el botón "Reparar" hace eso sin que esté documentado explícitamente. Para mi caso particular, también tuve que borrar las rutas ("ruta -f"). Por lo tanto, los comandos que terminé corriendo al final son:

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

También encontré algo de código C para llamar a la funcionalidad real "Conexiones de reparación", aunque no lo he probado - see last post here.

+0

¿tiene ese código C por casualidad o conocer la API utiliza – Nightforce2

+0

No, lo siento, ha sido un tiempo – EMP

+1

lo encontró utiliza el http IP clase auxiliar: //msdn.microsoft.com/en-us/library/windows/desktop/aa365872(v=vs.85).aspx. Infact! Microsoft lanzó el código de Ipconfig elf en uno de los ejemplos de código para MSDN_98. Es viejo, pero todavía se usa en la edición actual. Todos los protocolos de enrutamiento se realizan mediante el protocolo de enrutamiento ubicado aquí: http://msdn.microsoft.com/en-us/library/windows/desktop/bb530708(v=vs.85).aspx. Hice mi propio pensamiento de que esto sería útil para cualquier otra persona que lo buscara. – Nightforce2

0
ipconfig /renew 
2

En el caso de una conexión inalámbrica, también deshabilita y vuelve a habilitar el adaptador de red. Sospecho que algo así es lo que falta en el artículo.

8

Parece que hay un few more things que hace:

  • Dynamic Host Configuration Protocol (DHCP) se renueva: ipconfig/renovar
  • Address Resolution Protocol (ARP) caché se vacía: arp -d
  • recarga de la caché de nombres NetBIOS: nbtstat -R
  • actualización de nombres NetBIOS se envía: nbtstat -R-R
  • de nombres de dominio Syste m (DNS) caché se vacía: ipconfig/flushdns registro de nombres de
  • DNS: ipconfig/registerdns

Pero una cosa, si usted tiene una conexión que rompe con tanta frecuencia es necesario reparar programación de la red, esta podría no ser la solución que está buscando.

0

¡Se acaba de hacer con 1 llamada api!

ver en Win32 API noticias foro: //comp.os.ms-windows.programmer.win32 en el que el código había sido dado (C)

+0

¿Podría publicar el código aquí? – EMP

1

Aparte de los puntos enumerados por lpfavreau y Evgeny, "Reparación "la conexión de red también hace lo siguiente. - Restablezca el dispositivo de red MAC (y probablemente PHY). Esto hace que el dispositivo vuelva a iniciar todas sus estructuras de datos locales, borrando cualquier condición de error en la que se haya quedado. - Borre las colas de paquetes Rx/Tx en el controlador del dispositivo y la interfaz de red, enjuagándolo de cualquier paquetes en cola.

5

Hay un comando para hacerlo desde la línea de comandos.

Citando http://en.kioskea.net/faq/sujet-848-windows-xp-repairing-the-network-connection-using-command-line:

En Windows XP no es una característica pequeña que permiten reparar una conexión de red. Vaya a las opciones de Conexiones de red en el Panel de control (Panel de control/Conexiones de red), haga clic con el botón derecho en la conexión de red que desee y elija la opción de reparación.

Es posible ejecutar el mismo comando utilizando la utilidad Netsh, dentro de la línea de comandos siguiente:

netsh int ip reset c:\network-connection.log

c: \ network-connection.log representa la dirección del archivo en el que la informes se almacenarán

El comando netsh int ip ... le permite restablecer el TCP/IP.

Con Windows XP Service Pack 2, puede utilizar:

netsh winsock reset catalog

Restablecimiento de la toma de corriente que maneja el protocolo TCP/IP. Esto se puede usar para manejar problemas de red (problema del navegador, problemas relacionados con la dirección IP, etc.)

+0

Gracias. Ya no puedo probarlo de manera confiable, ya que el problema original ya no existe, pero esto es algo de lo que no tenía conocimiento y parece prometedor. – EMP

+0

Parece que ambas acciones requieren un reinicio de la computadora mientras que la acción de reparación en la interfaz de usuario no. – Zitrax

1

Experimento la conexión wifi, que se cae de vez en cuando en mi caja de XP, sin ningún motivo aparente, y la única manera de arreglar esto es haciendo clic derecho en el ícono de conexión wifi en la bandeja del sistema y repararlo.

para hacer esto desde la línea de comandos, sigo los pasos en este artículo y funciona para mí: http://wlanbook.com/enable-disable-wireless-card-command-line/

1

Lo que funcionó para mí:

netsh interface show interface 

para mostrar el nombre de la interfaz que para mí era "Ethernet 2" y luego:

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

Esto ha funcionado para mí.

Cree un archivo por lotes (llamé a mine netrepair.bat) y colóquelo en un directorio donde tenga permisos de ejecución. Use el bloc de notas para crear el archivo.

tipo de las siguientes líneas en el archivo

ipconfig/renovar arp -d * nbtstat -R nbtstat -R-R ipconfig/flushdns ipconfig/registerdns

continuación, guardar y cerrar.

Abre un terminal cmd como administrador, vaya a la carpeta en la que se guarda netrepair.bat y escriba

netrepair.bat

en la línea de comandos.

Eso es todo.

Consulte http://support.microsoft.com/kb/289256 explicaciones de lo que hacen los comandos

-1

Aquí es un archivo XML Administrador de tareas (importarlo en el Administrador de tareas) que se ejecutará una interfaz netsh interface serie "Ethernet" discapacitado "seguido de un" HABILITADO .?"., 5 segundos después de despertador

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

@WayneEllery, también parece que incluye una respuesta real. – immibis

+0

Ok. No estoy seguro de lo que pasó Eliminé mi comentario –

Cuestiones relacionadas