В Windows 7 как изменить настройки прокси из командной строки?

45

Как изменить настройки прокси из командной строки в Windows 7?

Я не говорю только о http_proxy. Мне нужно установить общесистемные настройки прокси (те, что в настройках интернет-свойств). Как я могу это сделать?

зубцы
источник
В случае, если для прокси также требуется авторизация: stackoverflow.com/questions/26992886/…
Вадим

Ответы:

15

Вам нужно будет настроить скрипт реестра, который будет вносить изменения, которые вы обычно делаете через панель управления, а затем объединить скрипт, чтобы включить прокси. Вам также потребуется сценарий реестра «отменить», чтобы отключить изменения.

В моем случае у меня есть два сценария, enable.reg и disable.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#код для этого .. :). спасибо, в любом случае ..
зубцы
Это не похоже на работу для меня. Должен ли я на самом деле видеть флажок «Использовать сценарий автоматической настройки», отмеченный или не отмеченный в «Настройках локальной сети»?
Джонни
@ сомневаюсь, что ты собираешься поделиться этим 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

Я добавил продолжение строки (^) для улучшения читабельности. Кроме того, в этом случае это больше похоже на настройку для каждого пользователя, чем на общесистемную настройку.

sayap
источник
3
ИМО, это фактический ответ на вопрос. Спасибо @sayap
kmonsoor
4
+1. Это гораздо более элегантное решение для меня.
3
Примечание. ^Символы не являются частью команд.
Джошуа Дрейк
6
Но браузеры не перемещаются, пока вы не откроете окно «Конфигурация локальной сети». По крайней мере, это происходит со мной, когда я использую этот метод. Я делаю это, чтобы разбудить браузеры, чтобы прокси изменился, только после этого соединение работает.
Маркос Кассиано
1
@Cricrazy это то, что вы искали, я думаю
Нарзард
27

НетШ на помощь!

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 прокси
Кевин Дридгер
9
Я думаю, что это относится только к приложению, которое использует библиотеку WinHTTP. После быстрой проверки кажется, что ни одно из приложений в моей системе не использует это.
sayap
3

Я сделал это в 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 на 0B и наоборот, чтобы включить и отключить прокси.

Иван
источник
Я нашел ответ на SO, который обновляет параметр DefaultConnectionSettings с помощью powershell. Я думал, что это может быть полезно для кого-то. stackoverflow.com/a/15914470/1158180
Пол
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
чувак ... ты точно не видел заголовок ... Я знаю, что ты пытаешься мне сказать. Я хочу сделать это из командной строки.
зубцы
извини, похоже, приятель все исправил
Люк Рассел