No Windows 7, como alterar as configurações de proxy na linha de comando?

46

Como altero as configurações de proxy da linha de comando no Windows 7?

Eu não estou falando apenas do http_proxy. Preciso definir configurações de proxy em todo o sistema (as configurações de propriedades da Internet). Como faço isso?

pontas
fonte
Caso o proxy também exija autorização: stackoverflow.com/questions/26992886/…
Vadzim

Respostas:

15

Você precisará configurar um script de registro que fará as alterações normalmente feitas no Painel de Controle e depois mesclar o script para ativar o proxy. Você também precisaria de um script de registro "desfazer" para desativar as alterações.

No meu caso, tenho dois scripts, enable.reg e disable.reg:

Ativar 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

Desativar 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

No script "desativar", =-no final do AutoConfigURL, na verdade, exclui a chave do registro.

Observe que os valores que você vê acima são modificados para os fins desta resposta. Os valores hexadecimais reais são muito mais longos.

Para usar esses scripts, eu tinha um arquivo em lotes para cada um, parecido com este:

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

Isso é totalmente viável a partir da linha de comando.


fonte
Acabei fazendo algo assim. Eu não sabia como manipular o registro do script em lote, então escrevi o c#código para isso .. :). thanx de qualquer maneira ..
pinos
Isso não parece funcionar para mim. Devo realmente ver a caixa "usar script de configuração automática" sendo marcada e desmarcada em 'Configurações da LAN'?
Anónimo
@ pinos Duvido que você compartilhe esse código C # ... certo?
Tisaconundrum 18/0318
61

Solução simples e funcional recuperada de http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html

Comando para ativar o uso de proxy:

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

Comando para desativar o uso de proxy:

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

Comando para alterar o endereço do proxy:

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

Adicionei continuação de linha (^) para melhorar a legibilidade. Além disso, nesse caso, é mais uma configuração por usuário do que uma configuração em todo o sistema.

sayap
fonte
3
IMO, esta é a resposta real para a pergunta. Obrigado @sayap
kmonsoor
4
+1. Esta é uma solução muito mais elegante para a minha.
3
Nota: Os ^caracteres não fazem parte dos comandos.
10133 Joshua Drake
6
Mas os navegadores não navegam até você abrir a janela "Configuração da LAN". Pelo menos isso acontece comigo quando eu uso esse método. Eu faço isso para ativar os navegadores que o proxy mudou, somente depois disso, a conexão funciona.
Marcos Cassiano
1
@Cricrazy isso é o que você estava procurando Eu acho
Narzard
27

NetSh para o resgate!

NetSh winhttp set proxy deve ser útil. Aqui estão os 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
fonte
Limpando o proxy usando netsh: netsh procuração redefinição winhttp
Kevin Driedger
9
Eu acho que isso só se aplica a aplicativos que usam a biblioteca WinHTTP. Após um teste rápido, parece que nenhum aplicativo comum no meu sistema usa isso.
sayap
4

Fiz isso em C #, mas a filosofia é a mesma, escrevendo no registro, para que as seguintes instruções possam ser extrapoladas para o comando line. Deve ser feito três coisas:

  1. Escreva no Registro "Configurações do HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet", no ProxyEnable: 1 para ativar, 0 para desativar

  2. Grave no Registro "Configurações de HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet", no ProxyServer: xxx.xxx.xxx.xxxx: aaaa (xxx ... é o IP, aa .. é a porta)

  3. Após executar as etapas 1 e 2, você terá gravado no registro a ativação do proxy, o IP e a porta, mas se você abrir o navegador, perceberá que não é suficiente, ainda não poderá navegar. A terceira etapa consiste em alterar o registro em relação às configurações de conexões:

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

Observe que, embora (pelo menos para o W7) haja 204 bytes nesse registro, você só precisa modificar o byte 8 (9º porque o byte 0 é o primeiro). O valor do byte 8 não apenas contém informações sobre a ativação / desativação do proxy, mas também sobre outras 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. 

No meu caso, a opção 'Detectar configurações automaticamente' está sempre ativada, portanto, alterno o valor do byte 8 de 09 para 0B e vice-versa para ativar e desativar o proxy.

Ivan
fonte
1
Encontrei uma resposta no SO que atualiza a configuração DefaultConnectionSettings usando o powershell. Eu pensei que poderia ser útil para alguém. stackoverflow.com/a/15914470/1158180
PaulH
2

Crie um arquivo em lotes e cole o seguinte conteúdo (alternará o estado 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
fonte
1
Isso é muito semelhante à resposta do @ sayap.
-3

Espero estar apontando você na direção correta aqui, mas se você estiver tentando acessar as configurações de proxy por meio de "Opções da Internet", basta abrir o menu Iniciar e digite "opção da Internet" (qualquer configuração ou aplicativo que você possa localizar também exemplo "proxy"). Você deve reconhecer este menu e poder adicionar as configurações necessárias.

Luke Russell
fonte
1
cara ... você não viu o título adequadamente ... eu sei o que você está tentando me dizer. Eu quero fazer isso na linha de comando.
pinos
desculpe homem, parece ser amigo? Fica todo fixa-se embora
Lucas Russell