Windows 代理设置后部分软件不能用怎么办?按 6 层排查修复
简答:Windows 代理设置后只有部分软件不能用,通常不是“代理完全失效”,而是不同软件读取的代理配置层不同。先确认代理客户端正在监听,再检查 Windows 系统代理、PAC、软件独立代理、HTTP_PROXY 环境变量和 WinHTTP;不要一开始就重置网络。本文只讲 Windows 10/11,不含 macOS、iOS 和 Android。
定义:Windows 代理分流问题,是指系统代理已经开启,但不同应用因使用 WinINet、WinHTTP、环境变量、独立代理或自有网络协议而出现联网结果不一致。
先试这一步:用 3 个结果判断故障在哪一层
先关闭正在运行的软件,再确认代理客户端已启动,并把实际监听地址和端口替换到下面命令中。假设本地 HTTP 代理端口为 7890:
- 检查端口是否监听:
Test-NetConnection 127.0.0.1 -Port 7890。如果TcpTestSucceeded为False,先回到代理客户端确认端口、模式和进程是否正常;如果为True,继续下一步。 - 测试本地代理是否能转发:
curl.exe -I -x http://127.0.0.1:7890 https://example.com。能返回 HTTP 状态码,说明 HTTP 代理入口至少可连接;如果提示连接拒绝,通常是端口、协议或客户端状态不匹配。 - 对比不经过代理的请求:
curl.exe -I https://example.com。这只是 TCP/HTTP 测试,不代表 UDP 或 QUIC 软件也能使用该代理。
| 现象 | 优先检查 | 处理方向 |
|---|---|---|
| 所有软件都不能用 | 客户端、端口、Windows 手动代理 | 确认监听端口,再检查系统代理地址和端口 |
| 浏览器能用,Git 或命令行不能用 | 环境变量、Git 独立配置、WinHTTP | 分别查看 HTTP_PROXY、Git 配置和 netsh winhttp |
| 浏览器能用,Microsoft Store 或办公软件不能用 | 应用网络栈、WinHTTP、组织策略 | 不要直接清空公司代理,先询问管理员 |
| 只有一个浏览器不能用 | 浏览器独立代理、扩展、PAC | 关闭独立代理扩展,检查浏览器自己的代理选项 |
| 游戏不能用但网页正常 | 协议支持、UDP/QUIC、游戏自身设置 | 确认软件是否支持 HTTP、HTTPS 或 SOCKS5,不要用 TCP 结果代替 UDP 结论 |
Windows 官方支持自动检测、设置脚本和手动代理三种配置方式;入口为“设置 → 网络和 Internet → 代理”。Microsoft 的 Windows 代理说明也提醒,VPN 连接的代理设置需要单独配置。
第 1 层:检查 Windows 10/11 的代理开关、PAC 和例外列表
- 打开“设置 → 网络和 Internet → 代理”。Windows 10 和 Windows 11 的菜单名称可能略有差异,以当前页面为准。
- 在“自动代理设置”中,记录“自动检测设置”是否开启,以及“使用设置脚本”是否开启。PAC 脚本可能根据域名决定直连或代理,不能只看手动代理开关。
- 在“手动代理设置”中核对服务器地址、端口和例外列表。常见本地写法是
127.0.0.1:7890;不要把http://、用户名或密码误填进只接受主机和端口的输入框。 - 如果是单位或学校电脑,看到“由组织管理”、代理开关灰色或设置会自动恢复,不要直接清空配置,先向 IT 管理员确认是否存在组策略、认证代理或 PAC 要求。
Windows 的桌面应用可能读取用户 Internet 选项,也可能使用另一套 WinHTTP 或现代网络 API。Microsoft 对 WinINet 与 WinHTTP 的区分说明可用于理解为什么同一台电脑上的软件表现不同。WinINet 文档显示,WinINet 面向需要共享用户 Internet 选项的桌面应用;WinINet 与 WinHTTP 对比文档则说明两者适用场景不同。
第 2 层:确认软件是否有独立代理设置
系统代理不会自动覆盖所有软件。以下软件类型应分别检查:
- 浏览器:检查浏览器扩展、独立代理插件、隐私软件和 PAC 设置。若只有一个浏览器异常,先使用无扩展窗口测试,再恢复默认代理设置。
- Git:在 PowerShell 中执行
git config --global --get http.proxy和git config --global --get https.proxy。如果显示了失效地址,可按实际情况删除:git config --global --unset http.proxy;HTTPS 同理。Git 官方文档说明,Git 也会读取http_proxy、https_proxy和all_proxy环境变量,并支持独立的http.proxy配置。Git 配置文档 - Docker Desktop:打开“Settings → Resources → Proxies”,确认是使用系统代理还是手动代理。Docker Desktop 的主机流量、镜像拉取和容器流量可能需要分别配置,不能只修改 Windows 代理。Docker Desktop 代理设置文档
- 游戏或即时通信软件:检查软件是否支持 HTTP、HTTPS 或 SOCKS5,是否要求独立填写代理,是否主要使用 UDP/QUIC。若软件没有代理选项,系统代理可能无法覆盖它的全部连接。
- 企业办公软件:如果软件需要公司认证、证书或内网域名,不要用公共代理配置替代组织要求;先确认 PAC、身份验证和内网直连规则。
第 3 层:检查 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY
命令行、开发工具和部分跨平台应用可能优先读取环境变量。分别执行:
Get-ChildItem Env:HTTP_PROXY,HTTPS_PROXY,ALL_PROXY,NO_PROXY,http_proxy,https_proxy,all_proxy,no_proxy如果看到旧端口或失效地址,先在当前 PowerShell 会话临时清除并重试:
$env:HTTP_PROXY=$null
$env:HTTPS_PROXY=$null
$env:ALL_PROXY=$null
$env:NO_PROXY=$null如果清除后软件恢复,说明问题在环境变量,而不是 Windows 手动代理。再到“系统属性 → 高级 → 环境变量”检查用户变量和系统变量,删除或改正旧值后,完全退出并重新打开软件。PowerShell 文档说明,Windows 上的 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 和 NO_PROXY 会影响默认代理判断。Invoke-WebRequest 代理说明
第 4 层:检查 WinHTTP,不要把它和系统代理混为一谈
以普通用户打开 PowerShell,先查看 WinHTTP:
netsh winhttp show proxy如果目标软件明确依赖 WinHTTP,可在确认没有单位代理要求后,将当前用户 Internet 选项导入 WinHTTP:
netsh winhttp import proxy source=ie如果确认不需要 WinHTTP 代理,才执行:
netsh winhttp reset proxy该命令会把 WinHTTP 代理恢复为直连,不等于关闭 Windows“设置 → 网络和 Internet → 代理”中的用户代理。Microsoft 文档说明,WinHTTP 用于应用程序的 HTTP 请求,并提供 show、import 和 reset 等命令。netsh winhttp 文档
如果软件返回 407 Proxy Authentication Required,优先检查代理认证方式和账号权限;如果提示证书错误,不要为了联网而关闭 TLS 证书验证。
第 5 层:排查端口冲突、DNS、TUN 和安全软件
- 端口冲突:执行
Get-NetTCPConnection -LocalPort 7890 -ErrorAction SilentlyContinue | Format-Table -Auto。如果端口被其他进程占用,执行Get-Process -Id <PID>查看进程,再在代理客户端中改用未占用端口。 - 代理协议不匹配:HTTP 端口不要直接当作 SOCKS5 端口使用;如果客户端提供多个入站端口,以设置页显示的协议为准。
- DNS:若命令能连 IP,但软件按域名失败,执行
ipconfig /flushdns后重试,并检查代理客户端的 DNS 模式。开启 TUN 或 fake-IP 后,域名解析路径可能改变,测试结果应单独记录。 - TUN 或虚拟网卡:如果只是系统代理模式可用、TUN 模式不可用,检查虚拟网卡是否存在、是否被安全软件拦截,以及客户端是否获得所需权限。系统代理通常不需要管理员权限;TUN、驱动或网络堆栈操作可能需要。
- 防火墙和安全软件:暂时不要直接关闭防护。先查看是否拦截了代理客户端进程、回环地址或虚拟网卡;办公设备应按组织流程处理。
第 6 层:WSL、Docker 和办公软件的单独处理
- WSL:Windows 11 22H2 及更高版本可在用户目录的
%UserProfile%\.wslconfig中使用最小配置:
保存后执行[wsl2] autoProxy=truewsl --shutdown,再启动发行版。Microsoft 文档说明,autoProxy=true会让 WSL 使用 Windows 的 HTTP 代理信息;PAC 本身不会自动变成 Linux 原生 PAC 配置,环境变量优先级也需要检查。WSL 网络文档 - Docker:在 Docker Desktop 的 Proxies 页面单独确认系统代理或手动代理;如果只是容器内不能访问,检查容器环境变量和构建阶段代理,而不是只改宿主机 Windows 设置。
- Microsoft Store 或企业办公软件:先检查 Windows 代理、WinHTTP、PAC 和组织认证;不要在公司设备上直接执行网络重置或删除 PAC。若只有此类应用失败,优先让管理员确认组策略、证书和认证代理。
修复后的验证清单
- 代理客户端仍在运行,监听端口与设置页一致。
Test-NetConnection 127.0.0.1 -Port 端口成功。curl.exe -I -x http://127.0.0.1:端口 https://example.com能得到响应或明确的代理错误。- Windows 代理页中的自动检测、PAC、手动代理和例外列表没有互相冲突。
- Git、Docker、WSL 等软件的独立配置与环境变量没有指向旧端口。
netsh winhttp show proxy的结果符合当前网络环境。- 修改后完全退出并重新打开目标软件;WSL 配置修改后执行
wsl --shutdown。
如果仍只有一个软件失败,记录软件名称、错误码、使用的协议、是否需要账号认证,以及关闭系统代理后的表现。这样比反复重启或直接重置网络更容易定位。
本文是第三方使用指南,不是念云 NianYun 官方页面;涉及具体服务、订阅或代理参数时,以对应服务和软件的官方说明为准。
常见问题
为什么浏览器能用,Git 却不能用?
浏览器可能读取 Windows 用户代理,而 Git 可能读取自己的 http.proxy 配置或环境变量。先执行 git config --global --get http.proxy,再检查 HTTP_PROXY 和 HTTPS_PROXY 是否指向旧端口。
Windows 系统代理能让所有游戏自动联网吗?
不能直接这样判断。游戏可能使用 UDP、QUIC、自有网络库或独立代理设置,系统 HTTP 代理未必覆盖全部连接。网页测试成功,只能说明对应的 HTTP 请求可用。
可以直接执行 netsh winhttp reset proxy 吗?
如果电脑由公司、学校或其他组织管理,不建议直接执行。该命令会把 WinHTTP 设为直连,可能影响依赖组织代理的应用或服务。先用 netsh winhttp show proxy 查看,再确认是否需要恢复。
WSL 开了 autoProxy 仍然不能联网怎么办?
检查 Windows 11 版本、WSL 版本、Windows 代理是否为 PAC、Linux 中是否已有自定义环境变量,并执行 wsl --shutdown 后重新启动。PAC 代理在 Linux 中不会自动获得完整的原生 PAC 支持。
代理地址应该填 127.0.0.1 还是 localhost?
本机代理通常可使用回环地址,但应以客户端显示的监听地址为准。若一个软件无法连接,优先尝试客户端明确显示的地址和端口,并确认该端口确实处于监听状态。
常见问题
为什么浏览器能用,Git 却不能用?
浏览器、Git 和命令行可能读取不同的代理层。检查 Git 的 http.proxy、https.proxy,以及 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量。
Windows 系统代理能让所有游戏自动联网吗?
不能直接保证。游戏可能使用 UDP、QUIC、自有网络库或独立代理设置,网页测试成功不代表游戏协议也能使用该代理。
可以直接执行 netsh winhttp reset proxy 吗?
办公或学校电脑不建议直接执行。先用 netsh winhttp show proxy 查看当前配置,并确认不会清除组织要求的 WinHTTP 代理。
WSL 开启 autoProxy 后仍然不能联网怎么办?
检查 Windows 版本、WSL 版本、PAC 设置和 Linux 环境变量,然后执行 wsl --shutdown,再重新启动发行版。
代理地址应该填 127.0.0.1 还是 localhost?
以代理客户端显示的监听地址为准。若软件报连接失败,先用 Test-NetConnection 检查目标端口是否确实在监听。
相关阅读
参考资料
- Use a proxy server in Windows|Microsoft Support
- About WinINet|Microsoft Learn
- WinINet vs. WinHTTP|Microsoft Learn
- netsh winhttp|Microsoft Learn
- git-config Documentation|Git(git-scm.com)
- Change Docker Desktop settings|Docker Docs
- Invoke-WebRequest|Microsoft Learn
- Accessing network applications with WSL|Microsoft Learn