Як в Windows 7 змінити налаштування проксі з командного рядка?


46

Як змінити налаштування проксі з командного рядка в Windows 7?

Я не кажу тільки про те http_proxy. Мені потрібно встановити загальносистемні налаштування проксі (ті, що в налаштуваннях властивостей Інтернету). Як це зробити?


У разі , якщо проксі - сервер також вимагає авторизації: stackoverflow.com/questions/26992886 / ...
Вадиму

Відповіді:


15

Вам потрібно буде налаштувати скрипт реєстру, який буде вносити зміни, які ви зазвичай виконували через Панель управління, а потім об'єднати сценарій, щоб увімкнути проксі. Вам також знадобиться "скасувати" сценарій реєстру, щоб відключити зміни.

У моєму випадку у мене є два сценарії, enable.reg та ones.reg:

Увімкнути проксі:

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

Вимкнути проксі:

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

У сценарії "відключити", =-наприкінці AutoConfigURL фактично видаляється ключ з реєстру.

Зауважте, що значення, які ви бачите вище, змінені для цілей цієї відповіді. Фактичні значення шістнадцятки значно довші.

Для використання цих скриптів у мене був пакетний файл для кожного, виглядаючи приблизно так:

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

Це повністю працює з командного рядка.


Я закінчила щось подібне. Я не знав, як маніпулювати реєстром із пакетного сценарію, тому я написав c#код для цього .. :). Thanx будь-якому випадку ..
зубець

Це, здається, не працює для мене. Чи повинен я дійсно бачити, що в розділі "Налаштування локальної мережі" прапорець "використовувати сценарій автоматичної конфігурації" позначається і не знімається?
Jonny

@ зубці я сумніваюся, що ви поділитесь цим C # кодом ... правда?
tisaconundrum

61

Просте та робоче рішення, отримане з http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html

Команда для активації використання проксі:

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

Команда для відключення використання проксі:

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

Команда для зміни адреси проксі:

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

Я додав продовження рядка (^) для поліпшення читабельності. Також у цьому випадку це більше схоже на налаштування для кожного користувача, ніж на загальну систему.


3
ІМО, це фактична відповідь на питання. Спасибі @sayap
kmonsoor

4
+1. Це набагато більш елегантне рішення для мене.

3
Примітка. ^Символи не входять до складу команд.
Джошуа Дрейк

6
Але браузери не переходять до тих пір, поки ви не відкриєте вікно "Конфігурація локальної мережі". Принаймні це трапляється зі мною, коли я використовую цей метод. Я роблю це, щоб розбудити браузери, що проксі змінився, тільки після цього з'єднання працює.
Маркос Кассіано

1
@Cricrazy це те, що ви шукали, я думаю
Narzard

27

NetSh на допомогу!

NetSh winhttp set proxy має бути корисним. Ось команди:

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"


Очищення проксі за допомогою netsh: netsh winhttp reset proxy
Kevin Driedger

9
Я думаю, це стосується лише програми, яка використовує бібліотеку WinHTTP. Після швидкого тестування, схоже, це не використовує жодна звичайна програма в моїй системі.
sayap

4

Я робив це на C #, але філософія така ж, записуюсь до реєстру, тому наступні інструкції можна екстраполювати на командну лінію. Зробиться три речі:

  1. Напишіть до реєстру "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", на ProxyEnable: 1 для включення, 0 для відключення

  2. Напишіть до реєстру "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings", на ProxyServer: xxx.xxx.xxx.xxxx: yyyy (xxx ... IP, yy .. - порт)

  3. Виконавши кроки 1 і 2, ви будете писати, щоб зареєструвати активацію проксі-сервера та IP-адреси та порту, але якщо ви відкриєте браузер, ви помітите, що його недостатньо, ви ще не можете переміщатися. Третій крок полягає у зміні реєстру щодо налаштувань з'єднань:

"Програмне забезпечення \ Microsoft \ Windows \ CurrentVersion \ Налаштування Інтернету \ З'єднання" у "DefaultConnectionSettings".

Зауважте, що хоча (принаймні для W7) у цьому реєстрі є 204 байти, вам потрібно лише змінити байт 8 (9-й, оскільки байт 0 є першим). Значення байта 8 містить не лише інформацію про включення / відключення проксі, але і про інші функціональні можливості:

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

У моєму випадку параметр "Автоматично визначати налаштування" завжди ввімкнено, тому я перемикаю значення байта 8 з 09 на 0В і навпаки, щоб включити і вимкнути проксі.


1
Я знайшов відповідь на SO, який оновлює налаштування DefaultConnectionSettings за допомогою посилання shell. Я подумав, що комусь це може бути корисно. stackoverflow.com/a/15914470/1158180
paulH

2

Створіть пакетний файл і вставте наступний вміст (це переключить стан проксі),

@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
Це дуже схоже на відповідь @ sayap.

-3

Я сподіваюсь, що я вказую на вас у правильному напрямку, але якщо ви намагаєтесь отримати доступ до налаштувань проксі через "Параметри Інтернету", просто відкрийте меню "Пуск" та введіть "Інтернет-опцію" (будь-яку настройку чи програму ви також можете знайти таким чином приклад "проксі"). Потім ви повинні розпізнати це меню та мати змогу додати потрібні налаштування.


1
чувак ... ти достеменно не бачив заголовка ... Я знаю, що ти намагаєшся сказати мені. Я хочу це зробити з командного рядка.
дзвінки

Вибачте, чоловіче, здається, приятель змусив вас все полагодити
Люк Рассел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.