W systemie Windows 7, jak zmienić ustawienia proxy z wiersza poleceń?

46

Jak zmienić ustawienia proxy z wiersza poleceń w systemie Windows 7?

Nie mówię tylko o http_proxy. Muszę ustawić ogólnosystemowe ustawienia proxy (te w ustawieniach właściwości Internetu). W jaki sposób mogę to zrobić?

zęby
źródło
W przypadku, gdy proxy wymaga również autoryzacji: stackoverflow.com/questions/26992886/...
Vadzim

Odpowiedzi:

15

Musisz skonfigurować skrypt rejestru, który wprowadzi zmiany, które normalnie zrobiłbyś za pomocą Panelu sterowania, a następnie scalić skrypt, aby włączyć serwer proxy. Potrzebny byłby również skrypt rejestru „cofnij”, aby wyłączyć zmiany.

W moim przypadku mam dwa skrypty: enable.reg i disable.reg:

Włącz serwer 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

Wyłącz serwer 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

W skrypcie „wyłącz” =-na końcu AutoConfigURL faktycznie usuwa klucz z rejestru.

Pamiętaj, że wartości, które widzisz powyżej, zostały zmodyfikowane na potrzeby tej odpowiedzi. Rzeczywiste wartości szesnastkowe są znacznie dłuższe.

Aby użyć tych skryptów, miałem plik wsadowy dla każdego z nich, wyglądający mniej więcej tak:

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

Jest to w pełni wykonalne z poziomu wiersza poleceń.


źródło
Skończyło się na zrobieniu czegoś takiego. Nie wiedziałem, jak manipulować rejestrem ze skryptu wsadowego, więc napisałem c#kod do tego .. :). dzięki w każdym razie ..
zęby
Wydaje mi się, że to nie działa. Czy rzeczywiście powinienem widzieć pole „Użyj skryptu automatycznej konfiguracji” zaznaczone i odznaczone w „Ustawieniach LAN”?
Jonny
@prongs Wątpię, czy podzielisz się tym kodem C # ... prawda?
tisaconundrum
61

Proste i działające rozwiązanie pobrane z http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html

Polecenie włączenia użycia proxy:

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

Polecenie wyłączenia użycia proxy:

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

Polecenie zmiany adresu proxy:

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

Dodałem kontynuację linii (^) dla lepszej czytelności. Ponadto w tym przypadku bardziej przypomina ustawienie na użytkownika niż ustawienie systemowe.

sayap
źródło
3
IMO, to jest faktyczna odpowiedź na pytanie. Dzięki @sayap
kmonsoor
4
+1. To jest o wiele bardziej eleganckie rozwiązanie dla mojego.
3
Uwaga: ^Znaki nie są częścią poleceń.
Joshua Drake
6
Ale przeglądarki nie nawigują, dopóki nie otworzysz okna „Konfiguracja sieci LAN”. Przynajmniej przydarza mi się ta metoda. Robię to, aby obudzić przeglądarki, które zmieniły serwer proxy, ale dopiero potem połączenie działa.
Marcos Cassiano,
1
@Cricrazy, myślę, że tego właśnie szukałeś
Narzard
27

NetSh na ratunek!

NetSh winhttp set proxy powinno być pomocne. Oto polecenia:

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
źródło
Czyszczenie proxy za pomocą netsh: netsh winhttp reset proxy
Kevin Driedger
9
Myślę, że dotyczy to tylko aplikacji korzystającej z biblioteki WinHTTP. Po szybkim teście nie wygląda na to, że korzysta z niego jakakolwiek wspólna aplikacja w moim systemie.
sayap
4

Zrobiłem to w C #, ale filozofia jest taka sama, piszę do rejestru, więc poniższe instrukcje można ekstrapolować na polecenie linii. Należy to zrobić trzy rzeczy:

  1. Napisz do rejestru „HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings”, na ProxyEnable: 1, aby włączyć, 0, aby wyłączyć

  2. Napisz do rejestru „HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings” na serwerze ProxyServer: xxx.xxx.xxx.xxxx: rrrr (xxx ... to adres IP, rr .. to port)

  3. Po wykonaniu kroków 1 i 2 napiszesz do rejestracji aktywację serwera proxy oraz adresu IP i portu, ale jeśli otworzysz przeglądarkę, zauważysz, że to nie wystarczy, nie możesz jeszcze nawigować. Trzeci krok polega na zmianie rejestru w zakresie ustawień połączeń:

„Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Connections” w „DefaultConnectionSettings”.

Zauważ, że chociaż (przynajmniej dla W7) w tym rejestrze jest 204 bajtów, musisz jedynie zmodyfikować bajt 8 (9, ponieważ bajt 0 jest pierwszym). Wartość Byte 8 zawiera nie tylko informacje o włączaniu / wyłączaniu proxy, ale także o innych funkcjach:

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

W moim przypadku „Automatycznie wykryj ustawienia” jest zawsze włączone, więc zmieniam wartość bajtu 8 z 09 na 0B i odwrotnie, aby włączyć lub wyłączyć proxy.

Ivan
źródło
1
Znalazłem odpowiedź na SO, która aktualizuje ustawienie DefaultConnectionSettings przy użyciu programu PowerShell. Myślałem, że to może być przydatne dla kogoś. stackoverflow.com/a/15914470/1158180
paulH
2

Utwórz plik wsadowy i wklej następującą zawartość (spowoduje to przełączenie stanu serwera 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
źródło
1
Jest to bardzo podobne do odpowiedzi @ sayap.
-3

Mam nadzieję, że wskazuję ci właściwy kierunek tutaj, ale jeśli próbujesz uzyskać dostęp do ustawień proxy przez „Opcje internetowe”, po prostu otwórz menu startowe i wpisz „opcja internetowa” (dowolne ustawienie lub aplikacja, którą możesz zlokalizować również w ten sposób) przykład „proxy”). Następnie powinieneś rozpoznać to menu i móc dodać potrzebne ustawienia.

Luke Russell
źródło
1
koleś ... nie widziałeś właściwie tytułu ... wiem, co próbujesz mi powiedzieć. Chcę to zrobić z wiersza poleceń.
Ząbki
przepraszam stary, wygląda na to, że kolego wszystko załatwiłeś
Luke Russell