In Windows 7, come modificare le impostazioni del proxy dalla riga di comando?


46

Come posso modificare le impostazioni proxy dalla riga di comando in Windows 7?

Non sto parlando solo del http_proxy. Devo configurare le impostazioni proxy a livello di sistema (quelle nell'impostazione delle proprietà di Internet). Come lo faccio?


Nel caso in cui il proxy richieda anche l'autorizzazione: stackoverflow.com/questions/26992886/…
Vadzim

Risposte:


15

Dovrai configurare uno script del registro che apporti le modifiche che faresti normalmente tramite il Pannello di controllo, quindi unire lo script per abilitare il proxy. Sarà inoltre necessario uno script di registro "annulla" per disabilitare le modifiche.

Nel mio caso, ho due script, enable.reg e disable.reg:

Abilita 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

Disabilita 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

Nello script "disabilita", =-alla fine di AutoConfigURL elimina effettivamente la chiave dal registro.

Nota che i valori che vedi sopra sono modificati ai fini di questa risposta. I valori esadecimali effettivi sono molto più lunghi.

Per usare questi script, avevo un file batch per ognuno, simile a questo:

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

Questo è completamente realizzabile dalla riga di comando.


Ho finito per fare qualcosa del genere. Non sapevo come manipolare il registro dallo script batch quindi ho scritto il c#codice per questo .. :). grazie comunque ..
Prongs

Questo non sembra funzionare per me. Dovrei effettivamente vedere la casella "Usa script di configurazione automatica" selezionata e deselezionata in "Impostazioni LAN"?
Jonny,

@prongs Dubito che condividerai quel codice C # ... giusto?
tisaconundrum,

61

Soluzione semplice e funzionante recuperata da http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html

Comando per abilitare l'utilizzo del proxy:

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

Comando per disabilitare l'utilizzo del proxy:

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

Comando per modificare l'indirizzo proxy:

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

Ho aggiunto la continuazione di riga (^) per una migliore leggibilità. Inoltre, in questo caso, è più simile a un'impostazione per utente che a un'impostazione a livello di sistema.


3
IMO, questa è la risposta effettiva alla domanda. Grazie @sayap
kmonsoor il

4
+1. Questa è una soluzione molto più elegante per il mio.

3
Nota: i ^caratteri non fanno parte dei comandi.
Joshua Drake,

6
Ma i browser non navigano fino a quando non si apre la finestra "Configurazione LAN". Almeno questo succede a me quando uso questo metodo. Faccio questo per riattivare i browser che il proxy ha cambiato, solo dopo che il connecion funziona.
Marcos Cassiano,

1
@Cricrazy questo è quello che stavi cercando, credo
Narzard,

27

NetSh in soccorso!

NetSh winhttp set proxy dovrebbe essere utile. Ecco i comandi:

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"


Cancellare il proxy usando netsh: netsh winhttp ripristina proxy
Kevin Driedger

9
Penso che questo si applichi solo all'applicazione che utilizza la libreria WinHTTP. Dopo un rapido test, non sembra che qualsiasi applicazione comune sul mio sistema lo usi.
Sayap

4

L'ho fatto in C #, ma la filosofia è la stessa, scrivendo nel registro, quindi le seguenti istruzioni possono essere estrapolate al comando di linea. Si devono fare tre cose:

  1. Scrivi al Registro di sistema "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", su ProxyEnable: 1 per abilitare, 0 per disabilitare

  2. Scrivi al Registro di sistema "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", su ProxyServer: xxx.xxx.xxx.xxxx: yyyy (xxx ... è l'IP, yy .. è la porta)

  3. Dopo aver eseguito i passaggi 1 e 2, avrai scritto nel registro l'attivazione del proxy, dell'IP e della porta, ma se apri il browser noterai che non è abbastanza, non puoi ancora navigare. Il terzo passaggio consiste nel modificare il registro per quanto riguarda le impostazioni delle connessioni:

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

Si noti che sebbene (almeno per W7) ci siano 204 byte in questo registro, è necessario modificare solo il byte 8 (9 ° poiché il byte 0 è il primo). Il valore Byte 8 contiene non solo informazioni sull'abilitazione / disabilitazione del proxy, ma anche su altre funzionalità:

        //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. 

Nel mio caso, l'opzione "Rileva automaticamente impostazioni" è sempre abilitata, quindi cambio il valore del byte 8 da 09 a 0B e viceversa per abilitare e disabilitare il proxy.


1
Ho trovato una risposta su SO che aggiorna l'impostazione DefaultConnectionSettings usando PowerShell. Ho pensato che potesse essere utile per qualcuno. stackoverflow.com/a/15914470/1158180
Paulh

2

Crea un file batch e incolla il seguente contenuto (Attiverà lo stato 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

1
Questo è molto simile alla risposta di @ sayap.

-3

Spero di indicarti la direzione corretta qui, ma se stai provando ad accedere alle impostazioni del proxy tramite "Opzioni Internet", apri semplicemente il menu Start e digita "opzione Internet" (qualsiasi impostazione o applicazione puoi trovare anche in questo modo esempio "proxy"). Dovresti quindi riconoscere questo menu ed essere in grado di aggiungere le impostazioni necessarie.


1
amico ... non hai visto bene il titolo ... so cosa stai cercando di dirmi. Voglio farlo dalla riga di comando.
poli

scusami amico, sembra che amico ti abbia sistemato tutti
Luke Russell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.