Di Windows 7, bagaimana cara mengubah pengaturan proxy dari baris perintah?

46

Bagaimana cara mengubah pengaturan proxy dari baris perintah di Windows 7?

Saya tidak hanya berbicara tentang http_proxy. Saya perlu mengatur pengaturan proxy seluruh sistem (yang ada di pengaturan properti Internet). Bagaimana aku melakukan itu?

garpu
sumber
Dalam hal proxy juga memerlukan otorisasi: stackoverflow.com/questions/26992886/…
Vadzim

Jawaban:

15

Anda harus mengonfigurasi skrip registri yang akan membuat perubahan seperti biasanya melalui Panel Kontrol, dan kemudian menggabungkan skrip untuk mengaktifkan proksi. Anda juga memerlukan skrip registri "undo" untuk menonaktifkan perubahan.

Dalam kasus saya, saya memiliki dua skrip, enable.reg dan disable.reg:

Aktifkan Proksi:

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

Nonaktifkan Proksi:

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

Dalam skrip "disable", =-pada akhir AutoConfigURL sebenarnya menghapus kunci dari registri.

Perhatikan bahwa nilai yang Anda lihat di atas dimodifikasi untuk keperluan jawaban ini. Nilai hex sebenarnya jauh lebih lama.

Untuk menggunakan skrip ini, saya punya file batch untuk masing-masing, terlihat seperti ini:

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

Itu sepenuhnya bisa diterapkan dari baris perintah.


sumber
Saya akhirnya melakukan sesuatu seperti ini. Saya tidak tahu bagaimana cara memanipulasi registri dari skrip batch jadi saya menulis c#kode untuk ini .. :). thanx anyways ..
cabang
Ini sepertinya tidak berhasil untuk saya. Haruskah saya benar-benar melihat kotak "gunakan skrip konfigurasi otomatis" yang dicentang dan tidak dijebak dalam 'Pengaturan LAN'?
Jonny
@ mungkin saya ragu Anda akan membagikan kode C # itu ... benar?
tisaconundrum
61

Solusi sederhana dan berfungsi diambil dari http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html

Perintah untuk mengaktifkan penggunaan proxy:

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

Perintah untuk menonaktifkan penggunaan proxy:

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

Perintah untuk mengubah alamat proxy:

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

Saya telah menambahkan kelanjutan baris (^) untuk meningkatkan keterbacaan. Juga, dalam hal ini, ini lebih seperti pengaturan per pengguna daripada pengaturan seluruh sistem.

sayap
sumber
3
IMO, ini adalah jawaban aktual untuk pertanyaan itu. Terima kasih @sayap
kmonsoor
4
+1. Ini adalah solusi yang jauh lebih elegan untuk saya.
3
Catatan: ^Karakter bukan bagian dari perintah.
Joshua Drake
6
Tetapi browser tidak menavigasi sampai Anda membuka jendela "konfigurasi LAN". Setidaknya ini terjadi pada saya ketika saya menggunakan metode ini. Saya melakukan ini untuk membangunkan browser yang diubah proxy, hanya setelah itu, koneksi berfungsi.
Marcos Cassiano
1
@Crazyrazy inilah yang Anda cari
Narzard
27

NetSh untuk menyelamatkan!

NetSh winhttp set proxy harus bermanfaat. Inilah perintahnya:

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
sumber
Menghapus proxy menggunakan netsh: netsh winhttp reset proxy
Kevin Driedger
9
Saya pikir ini hanya berlaku untuk aplikasi yang menggunakan pustaka WinHTTP. Setelah tes cepat, sepertinya tidak ada aplikasi umum pada sistem saya yang menggunakannya.
sayap
4

Saya melakukannya di C #, tetapi filosofi itu sama, menulis ke registri, sehingga instruksi berikut dapat diekstrapolasi ke perintah baris. Itu akan dilakukan tiga hal:

  1. Menulis ke Registry "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", pada ProxyEnable: 1 untuk mengaktifkan, 0 untuk menonaktifkan

  2. Tulis ke Registri "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", di ProxyServer: xxx.xxx.xxx.xxxx: yyyy (xxx ... adalah IP, yy .. adalah port)

  3. Setelah melakukan langkah 1 dan 2 Anda akan menulis ke registri aktivasi proxy dan IP dan port, tetapi jika Anda membuka browser Anda akan melihat bahwa itu tidak cukup, Anda belum dapat menavigasi. Langkah ketiga terdiri dari mengubah registri tentang pengaturan koneksi:

"Perangkat Lunak \ Microsoft \ Windows \ CurrentVersion \ Pengaturan Internet \ Koneksi" pada "DefaultConnectionSettings".

Perhatikan bahwa walaupun (setidaknya untuk W7) ada 204 byte dalam registri ini, Anda hanya perlu memodifikasi byte 8 (ke-9 karena byte 0 adalah yang pertama). Nilai Byte 8 tidak hanya berisi informasi tentang proxy aktifkan / nonaktifkan, tetapi juga tentang fungsionalitas lain:

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

Dalam kasus saya, 'Pengaturan deteksi otomatis' selalu diaktifkan, jadi saya mengalihkan nilai byte 8 dari 09 ke 0B dan sebaliknya untuk mengaktifkan dan menonaktifkan proxy.

Ivan
sumber
1
Saya menemukan jawaban pada SO yang memperbarui pengaturan DefaultConnectionSettings menggunakan PowerShell. Saya pikir ini mungkin berguna bagi seseorang. stackoverflow.com/a/15914470/1158180
paulH
2

Buat file batch dan rekatkan konten berikut (Ini akan mengaktifkan status 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
sumber
1
Ini sangat mirip dengan jawaban @ sayap.
-3

Saya harap saya mengarahkan Anda ke arah yang benar di sini, tetapi jika Anda mencoba mengakses pengaturan proxy melalui "opsi Internet", cukup buka menu mulai dan ketik "opsi internet" (pengaturan atau aplikasi apa pun yang dapat Anda temukan dengan cara ini juga contoh "proxy"). Anda kemudian harus mengenali menu ini dan dapat menambahkan pengaturan yang Anda butuhkan.

Luke Russell
sumber
1
kawan ... kau tidak melihat judulnya dengan benar ... Aku tahu apa yang ingin kau katakan padaku. Saya ingin melakukannya dari baris perintah.
Cabang
maaf kawan, sepertinya teman sudah memperbaiki semuanya
Luke Russell