Обзор
В этой статье объясняется, как настроить прокси в Windows, разделяя настройки для пользователя (WinINET) и для всей системы (WinHTTP).
Пример: ProxyServer = http=<<PROXY_ADDRESS>>;https=<<PROXY_ADDRESS>>.
Переменные, зависящие от окружения, указаны в виде <<имя_переменной>>.
Обозначения переменных
| Переменная | Пример | Описание |
|---|---|---|
<<PROXY_ADDRESS>> |
proxy.example.com:8080 |
Хост и порт прокси-сервера |
<<PROXY_BYPASS>> |
intranet.example.com;192.168.*;<local> |
Список адресов, для которых прокси не используется. Разделяются ; |
<<ADVPROXY_SETTINGS_PATH>> |
C:\proxy-settings.json |
Путь к файлу настроек advproxy |
Шаг 1: Понимание типов прокси-настроек
| Тип | Область применения | Назначение |
|---|---|---|
| Пользовательский (WinINET) | Для вошедшего пользователя | Применяется к браузерам и пользовательским приложениям. Отражает параметры IE/Edge |
| Системный (WinHTTP) | Для системных служб | Используется для Windows Update, BITS, Defender и других системных служб |
BITS (Background Intelligent Transfer Service) отвечает за фоновую передачу данных, включая обновления Windows и Defender.
Он работает от имени системной учётной записи (LocalSystem), поэтому не использует пользовательские настройки WinINET.
Шаг 2: Настройка пользовательского прокси через PowerShell
$proxy = "<<PROXY_ADDRESS>>"
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" `
-Name ProxyEnable -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" `
-Name ProxyServer -Value "http=$proxy;https=$proxy"
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" `
-Name ProxyOverride -Value "<<PROXY_BYPASS>>"
Проверка:
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | Select ProxyEnable, ProxyServer, ProxyOverride
Шаг 3: Настройка системного прокси (WinHTTP / BITS)
① Старый метод (до Windows Server 2019)
netsh winhttp set proxy <<PROXY_ADDRESS>> "<<PROXY_BYPASS>>"
netsh winhttp show proxy
② Новый метод (Windows Server 2022 и новее — рекомендуется)
Создайте JSON-файл:
@'
{
"ProxyIsEnabled": true,
"Proxy": "http=<<PROXY_ADDRESS>>;https=<<PROXY_ADDRESS>>",
"ProxyBypass": "<<PROXY_BYPASS>>",
"AutoConfigIsEnabled": false,
"AutoDetect": false
}
'@ | Out-File "<<ADVPROXY_SETTINGS_PATH>>" -Encoding ascii
Примените настройки:
netsh winhttp set advproxy setting-scope=machine settings-file="<<ADVPROXY_SETTINGS_PATH>>"
Если не хотите использовать JSON-файл, можно задать параметры напрямую:
netsh winhttp set advproxy setting-scope=machine settings='{\"ProxyIsEnabled\":true,\"Proxy\":\"http=<<PROXY_ADDRESS>>;https=<<PROXY_ADDRESS>>\",\"ProxyBypass\":\"<<PROXY_BYPASS>>\",\"AutoConfigIsEnabled\":false,\"AutoDetect\":false}'
Это удобно для временных тестов и автоматизации.
Шаг 4: Применение настроек прокси для службы BITS
bitsadmin /util /setieproxy localsystem MANUAL_PROXY <<PROXY_ADDRESS>> "<<PROXY_BYPASS>>"
bitsadmin /util /getieproxy localsystem
Шаг 5: Проверка и устранение неполадок
netsh winhttp show proxy
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | Select ProxyEnable, ProxyServer, ProxyOverride
Если обновление Windows не проходит через прокси, убедитесь, что параметр AutoDetect выключен.
Для Server Core используйте формат advproxy.
Сброс настроек прокси
Пользовательский уровень (WinINET)
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value 0
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyServer -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyOverride -ErrorAction SilentlyContinue
Системный уровень (WinHTTP / advproxy)
netsh winhttp reset proxy
Для Windows Server 2022+:
netsh winhttp set advproxy setting-scope=machine settings='{\"Proxy\":\"\",\"ProxyBypass\":\"\",\"AutoconfigUrl\":\"\",\"AutoDetect\":false}'
Итог
В Windows есть два типа прокси-настроек: пользовательские (WinINET) и системные (WinHTTP / advproxy).
- WinINET управляет сетевыми запросами браузеров и пользовательских программ.
- WinHTTP / advproxy управляет системными службами: Windows Update, BITS, Defender и др.
На современных версиях Windows Server (2022+) рекомендуется использовать advproxy, однако старый winhttp остаётся совместимым.
Использование bitsadmin гарантирует корректное применение прокси для служб под LocalSystem.
Рекомендуемая стратегия:
- Определите тип связи — пользовательская или системная
- Настройте соответствующий уровень (WinINET или WinHTTP)
- Для Server Core — применяйте
advproxy - Для удаления настроек — используйте
reset proxyилиreset advproxy
Такой подход обеспечивает стабильную работу Windows Update и BITS даже в сетях с обязательным прокси.
