En Windows 7, ¿cómo cambiar la configuración del proxy desde la línea de comandos?

46

¿Cómo cambio la configuración del proxy desde la línea de comandos en Windows 7?

No estoy hablando solo de http_proxy. Necesito establecer configuraciones de proxy en todo el sistema (las que están en la configuración de propiedades de Internet). ¿Cómo puedo hacer eso?

púas
fuente
En caso de que el proxy también requiera autorización: stackoverflow.com/questions/26992886/…
Vadzim

Respuestas:

15

Deberá configurar una secuencia de comandos de registro que realice los cambios que normalmente haría a través del Panel de control y luego combinar la secuencia de comandos para habilitar el proxy. También necesitaría un script de registro "deshacer" para deshabilitar los cambios.

En mi caso, tengo dos scripts, enable.reg y disable.reg:

Habilitar proxy:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoConfigURL"="http://10.10.10.1/autoproxy/proxy.pac"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"DefaultConnectionSettings"=hex:16,00,00,00,05,02,00,00,0d,00,00,00,0e,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SavedLegacySettings"=hex:36,00,00,00,46,1a,00,00,0d,00,00,00,0e,00,00,00,32,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

Deshabilitar proxy:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoConfigURL"=-

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"DefaultConnectionSettings"=hex:16,00,00,00,05,02,00,00,0d,00,00,00,0e,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SavedLegacySettings"=hex:36,00,00,00,46,1a,00,00,0d,00,00,00,0e,00,00,00,32,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

En la secuencia de comandos "deshabilitar", =-al final de AutoConfigURL en realidad elimina la clave del registro.

Tenga en cuenta que los valores que ve arriba se modifican para los fines de esta respuesta. Los valores hexadecimales reales son mucho más largos.

Para usar estos scripts, tenía un archivo por lotes para cada uno, que se parecía a esto:

@echo off
start /min reg import C:\Path\To\Registry\File\enable_proxy.reg

Eso es completamente viable desde la línea de comandos.


fuente
Terminé haciendo algo como esto. No sabía cómo manipular el registro del script por lotes, así que escribí el c#código para esto ... :). gracias de todos modos ..
dientes
Esto no parece funcionar para mí. ¿Debo ver la casilla "Usar secuencia de comandos de configuración automática" activada y desactivada en 'Configuración de LAN'?
Jonny
@prongs Dudo que vayas a compartir ese código C # ... ¿verdad?
tisaconundrum
61

Solución simple y funcional recuperada de http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html

Comando para habilitar el uso del proxy:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
    /v ProxyEnable /t REG_DWORD /d 1 /f

Comando para deshabilitar el uso del proxy:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
    /v ProxyEnable /t REG_DWORD /d 0 /f

Comando para cambiar la dirección del proxy:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
    /v ProxyServer /t REG_SZ /d proxyserveraddress:proxyport /f

He agregado la continuación de línea (^) para mejorar la legibilidad. Además, en este caso, se parece más a una configuración por usuario que a una configuración de todo el sistema.

sayap
fuente
3
OMI, esta es la respuesta real a la pregunta. Gracias @sayap
kmonsoor
44
+1. Esta es una solución mucho más elegante para la mía.
3
Nota: Los ^personajes no son parte de los comandos.
Joshua Drake
66
Pero los navegadores no navegan hasta que abra la ventana "Configuración de LAN". Al menos esto me sucede cuando uso este método. Hago esto para activar los navegadores que el proxy cambió, solo después de eso, la conexión funciona.
Marcos Cassiano
1
@Cricrazy esto es lo que estabas buscando, creo
Narzard
27

NetSh al rescate!

NetSh winhttp set proxy Debería ser útil. Aquí están los comandos:

netsh winhttp set proxy myproxy

netsh winhttp set proxy myproxy:80 "<local>bar"

netsh winhttp set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.contoso.com"

Charles Oppermann
fuente
Borrar el proxy usando netsh: netsh winhttp reset proxy
Kevin Driedger
99
Creo que esto solo se aplica a la aplicación que usa la biblioteca WinHTTP. Después de una prueba rápida, no parece que ninguna aplicación común en mi sistema lo use.
sayap
4

Lo hice en C #, pero la filosofía es la misma, escribiendo en el registro, por lo que las siguientes instrucciones se pueden extrapolar al comando de línea. Se harán tres cosas:

  1. Escriba en el Registro "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", en ProxyEnable: 1 para habilitar, 0 para deshabilitar

  2. Escriba en el Registro "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", en ProxyServer: xxx.xxx.xxx.xxxx: aaaa (xxx ... es la IP, yy .. es el puerto)

  3. Después de realizar los pasos 1 y 2, habrá escrito en el registro la activación del proxy y la IP y el puerto, pero si abre el navegador, notará que no es suficiente, aún no puede navegar. El tercer paso consiste en cambiar el registro con respecto a la configuración de las conexiones:

"Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Connections" en "DefaultConnectionSettings".

Tenga en cuenta que aunque (al menos para W7) hay 204 bytes en este registro, solo tiene que modificar el byte 8 (noveno ya que el byte 0 es el primero). El valor del byte 8 no solo contiene información sobre la activación / desactivación del proxy, sino también sobre otras funcionalidades:

        //09 when only 'Automatically detect settings' is enabled 
        //03 when only 'Use a proxy server for your LAN' is enabled
        //0B when both are enabled
        //05 when only 'Use automatic configuration script' is enabled
        //0D when 'Automatically detect settings' and 'Use automatic      configuration script' are enabled
        //07 when 'Use a proxy server for your LAN' and 'Use automatic configuration script' are enabled
        //0F when all the three are enabled. 
        //01 when none of them are enabled. 

En mi caso, la opción 'Detectar configuraciones automáticamente' siempre está habilitada, por lo que cambio el valor del byte 8 de 09 a 0B y viceversa para habilitar y deshabilitar el proxy.

Ivan
fuente
1
Encontré una respuesta en SO que actualiza la configuración DefaultConnectionSettings usando powershell. Pensé que podría ser útil para alguien. stackoverflow.com/a/15914470/1158180
paulH
2

Cree un archivo por lotes y pegue el siguiente contenido (alternará el estado del Proxy),

@echo off

FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable') DO SET currentProxy=%%B
rem ECHO currentProxy=%currentProxy%

if %currentProxy%==0x1 (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
echo Proxy Disabled
) else (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
echo Proxy Enabled
  )

pause
Dinesh Gupta
fuente
1
Esto es muy similar a la respuesta de @ sayap.
-3

Espero estar apuntando en la dirección correcta aquí, pero si está intentando acceder a la configuración del proxy a través de "Opciones de Internet", simplemente abra el menú de inicio y escriba "opción de Internet" (cualquier configuración o aplicación también puede ubicarlo de esta manera ejemplo "proxy"). A continuación, debe reconocer este menú y poder agregar la configuración necesaria.

Luke Russell
fuente
1
amigo ... no viste el título correctamente ... Sé lo que estás tratando de decirme. Quiero hacerlo desde la línea de comando.
dientes
lo siento hombre, parece que tu amigo te arregló todo
Luke Russell