Windows UWP 應用程式無法走代理:回送限制解除方法
開啟系統代理後瀏覽器一切正常,Microsoft Store、郵件、天氣等商店應用程式卻連不上網或走了直連——這不是 Clash 設定錯了,而是 Windows 對 UWP 應用程式的回送限制在攔截。本文講清限制原理,給出圖形介面勾選與命令列兩種豁免方法,以及用 TUN 模式整體接管的替代方案。
問題現象:只有商店應用程式不正常
這類問題的典型情境:Clash 已開啟系統代理,瀏覽器連線國外網站流暢,但系統內建的商店應用程式集體失靈。常見表現有:
- Microsoft Store 開啟後一直轉圈,提示無網路連線,或應用程式下載進度停在 0 不動
- 郵件和行事曆、天氣、自黏便箋、Xbox 等系統應用程式重新整理失敗、顯示離線
- 從商店安裝的第三方 UWP 應用程式無法登入帳號或載入內容
- 同一台電腦上,Chrome、Edge 等一般桌面程式走代理完全正常
原因不在訂閱也不在規則。一般桌面程式(Win32)直接讀取系統代理設定,把流量發往 127.0.0.1:7890 這個本機連接埠;而商店應用程式執行在 AppContainer 沙箱裡,系統預設禁止它們連線任何回送位址,請求還沒到達 Clash 就被系統攔下了。
原理:AppContainer 與回送限制
自 Windows 8 起,商店應用程式(UWP,早年叫 Metro)被放進 AppContainer 隔離環境執行,網路層面附帶一套 Network Isolation 策略:預設不允許應用程式向本機回送位址(127.0.0.1、::1)建立連線。設計初衷是防止惡意商店應用程式探測和攻擊本機執行的服務。
Clash 的系統代理,本質是讓程式把流量交給本機混合連接埠(預設 7890)。Win32 程式不受 Network Isolation 約束,照走不誤;UWP 應用程式連 127.0.0.1 這一步直接被系統拒絕。後果分兩種:應用程式回報網路錯誤徹底連不上;或乾脆繞過代理直連,表現為"能上網但沒走代理"。
解法叫 LoopbackExempt,即回送豁免:把指定應用程式加入白名單,允許它存取回送位址。豁免寫入系統設定,重新啟動後保留;新增和刪除都需要系統管理員權限。
豁免不等於走代理
回送豁免只解決"能不能連本機"的問題。豁免之後,應用程式仍需經過系統代理設定(或被 TUN 接管),流量才真正進入 Clash。兩者是先後關係,不是替代關係。
方法一:用戶端內建的豁免工具
圖形介面操作最省事,適合大多數使用者。
- 開啟 Clash Verge Rev,進入設定頁,找到「UWP 回送豁免」入口。
- 點擊後系統彈出應用程式清單(呼叫的是 Windows 內建的 EnableLoopback 介面),勾選需要豁免的應用程式。
- 儲存並確認系統管理員授權的彈出視窗,設定立即生效。
舊版 Clash for Windows 在安裝目錄附帶 EnableLoopback.exe,按兩下執行同樣是勾選清單的介面。勾選建議視需求而定:Microsoft Store、郵件和行事曆、Xbox、天氣等確實需要走代理的應用程式勾上即可,不必全選,豁免範圍越小越好。
方法二:CheckNetIsolation 命令列
圖形工具找不到目標應用程式,或想精確控制時,用系統內建的 CheckNetIsolation.exe。先以系統管理員身分開啟 PowerShell。
第一步,查應用程式的套件系列名稱(PackageFamilyName):
Get-AppxPackage -Name "*store*"
在輸出中找 PackageFamilyName 欄位,例如 Microsoft Store 是 Microsoft.WindowsStore_8wekyb3d8bbwe。然後視需求執行:
| 操作 | 指令 |
|---|---|
| 新增豁免 | CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.WindowsStore_8wekyb3d8bbwe |
| 檢視清單 | CheckNetIsolation.exe LoopbackExempt -s |
| 刪除單筆 | CheckNetIsolation.exe LoopbackExempt -d -n=Microsoft.WindowsStore_8wekyb3d8bbwe |
| 全部清除 | CheckNetIsolation.exe LoopbackExempt -c |
參數說明:-n 接受套件系列名稱或 AppContainer 名稱,-p 接受 SID,日常操作用 -n 即可。執行 -s 能列出目前所有已豁免的應用程式,方便核對。
權限要求
新增、刪除、清除都必須使用系統管理員身分的終端機,否則會提示"要求的操作需要提升"。一般視窗只能執行檢視清單。
方法三:TUN 模式整體接管
不想逐個應用程式設定豁免,可以換個做法。mihomo 核心的 TUN 模式會建立一張虛擬網卡,在網路層接管整台電腦的流量,不依賴系統代理設定。UWP 應用程式的連線和一般程式一樣被路由進 Clash,回送限制不再構成障礙。
TUN 模式需要安裝服務模式並授予系統管理員權限,設定入口在用戶端的設定頁。適合電腦上 UWP 應用程式較多、或經常遇到新應用程式不走代理的情境。排查其他網路問題時,建議先固定使用系統代理或 TUN 其中一種,避免兩種接管方式疊加干擾問題定位。
驗證與常見問題
豁免完成後,開啟 Microsoft Store 搜尋任意尋任意應用程式,頁面能正常載入即表示成功。更直接的確認方式:開啟用戶端的連線(Connections)面板,操作目標應用程式,觀察是否出現對應的網域連線紀錄——有紀錄,流量就確實經過了 Clash。
豁免後應用程式仍連不上
依序檢查:系統代理是否仍處於開啟狀態;混合連接埠是否被更動過(預設 7890);目標應用程式是否完全結束後再重新開啟,部分應用程式會快取網路狀態。
指令執行報錯
提示"需要提升"表示終端機不是系統管理員身分,關閉後按滑鼠右鍵以系統管理員身分重新執行 PowerShell 再執行。
應用程式更新後豁免失效
豁免以套件系列名稱記錄,一般跨版本保留。少數應用程式大改版後套件名稱改變,需要依新的 PackageFamilyName 重新新增一次,用 -s 對照清單即可確認。
小結
商店應用程式不走代理,根本原因是 Windows 的回送隔離,不是 Clash 故障。少量應用程式用圖形工具或 CheckNetIsolation 逐個豁免;應用程式多就直接用 TUN 模式,一次解決。