Windows UWP 應用無法使用代理?解除 Clash 回環限制的方法
整理 UWP 應用無法連線本機代理連接埠的原因,並比較用戶端內建回環工具、CheckNetIsolation 指令與 TUN 模式的適用情境和操作方式。
UWP 回環限制:瀏覽器正常,商店應用卻無法連線
在 Windows 開啟 Clash「系統代理」後,瀏覽器能瀏覽網站,Microsoft Store 或部分 UWP 應用卻一直載入。這時先別急著更換訂閱。瀏覽器能正常使用,只能證明瀏覽器採用的代理路徑可用,不代表沙箱應用也能連上相同的本機連接埠。
UWP 應用通常在 AppContainer 隔離環境中執行,預設會受到限制,無法存取本機回環位址。Clash 系列用戶端通常會在 127.0.0.1 監聽 HTTP 或混合代理連接埠,系統代理再將應用程式的請求導向這個位址。即使應用讀取了系統代理設定,若沙箱不允許連線至回環連接埠,請求可能在抵達 mihomo 核心之前就已失敗,因此記錄頁面也可能找不到對應紀錄。
先釐清三個層面
- 系統代理:告知會讀取這項設定的應用,將請求交給本機代理;它不會接管所有程式。
- 回環豁免:允許指定的 AppContainer 存取回環網路,但不會自動替應用設定代理,也不會變更 Clash 規則。
- TUN 模式:透過虛擬網路介面與路由接管符合條件的流量,不必仰賴每個應用主動讀取 HTTP 系統代理。
操作前檢查:監聽連接埠、系統代理與規則命中
先在用戶端確認實際監聽的連接埠。以下以 mixed-port: 7890 為例;這只是範例值,並非所有用戶端的預設值。若介面顯示混合連接埠是 7897,後續指令也要改為 7897。別把控制介面連接埠當成代理連接埠;external-controller 用於管理核心,不負責接收一般 HTTP 代理請求。
- 確認訂閱已載入、用戶端正在執行,並選擇一個可用的代理群組出口。
- 在 Windows 11 開啟「設定」→「網路和網際網路」→「Proxy」,確認「手動設定 Proxy」中的位址和連接埠與目前用戶端一致。Windows 10 的路徑為「設定」→「網路和網際網路」→「Proxy」。
- 先保持 TUN 關閉,只啟用系統代理,避免兩種流量接管方式同時運作而互相干擾。
- 在 PowerShell 測試本機連接埠,再透過明確指定代理的請求檢查代理連線。
Test-NetConnection -ComputerName 127.0.0.1 -Port 7890
curl.exe --proxy http://127.0.0.1:7890 --head https://www.microsoft.com/
TcpTestSucceeded: True 只代表執行 PowerShell 的桌面程序能建立本機 TCP 連線,不表示 UWP 沙箱也已獲准存取。第二個指令用來檢查 HTTP 代理能否處理 HTTPS 通道;若收到 HTTP 回應標頭,表示這條測試路徑已有回應,但仍須配合用戶端記錄確認目標連線使用哪個出口。
在「連線」或「記錄」頁面查看目標網域和策略。若已看到應用程式請求,且命中 DIRECT,請優先檢查規則,而非繼續新增回環豁免。規則模式會依序比對,前面的網域規則會先於最後的 MATCH 生效;回環設定不會將直連規則改為代理規則。
方法一:使用用戶端內建的 UWP 回環工具
部分 Windows 版 Clash 用戶端內建回環豁免功能。不同用戶端和版本的設定位置不盡相同,可在「設定」中搜尋「UWP」、「回環解鎖」或「Loopback」。只有介面上確實有這項功能時才使用此方法;找不到該選項不代表核心不支援代理,可直接採用下一節的系統指令。
- 開啟內建回環工具。若 Windows 顯示使用者帳戶控制提示,確認程式來源後再授權;修改豁免通常需要系統管理員權限。
- 在應用程式清單中找出實際發生問題的套件,例如 Microsoft Store。只勾選需要排查的應用,不必一次開放整份清單。
- 按下工具中的「儲存」或「套用」。若工具會立即生效,請依介面提示操作。
- 完全結束目標應用後再重新啟動。若關閉視窗後應用仍在背景執行,可在工作管理員中結束相關程序,再重新測試。
- 再次執行剛才失敗的操作,同時查看 Clash 連線記錄,並使用下一節的查詢指令確認豁免是否確實寫入。
這類工具本質上是管理 Windows 的回環豁免清單,不會修改訂閱內容。儲存後目標應用仍無法使用時,先確認是否選對套件,以及應用是否確實重新啟動。別只憑「介面顯示已勾選」就認定設定成功。
方法二:使用 CheckNetIsolation 精準新增與撤銷豁免
CheckNetIsolation.exe 是 Windows 內建的網路隔離診斷工具。當用戶端沒有內建選項、需要確認目前豁免狀態,或只想授權特定應用時,適合使用這個工具。新增與刪除豁免時,請在目前登入使用者的系統管理員 PowerShell 中執行;若使用其他系統管理員帳戶的憑證,務必確認查到的應用屬於目標使用者。
1. 查詢套件系列名稱
在開始功能表搜尋 PowerShell,選擇「以系統管理員身分執行」。先查詢 Microsoft Store 的套件識別資訊:
Get-AppxPackage -Name Microsoft.WindowsStore |
Select-Object Name, PackageFamilyName
指令回傳的 PackageFamilyName 才是 -n= 要使用的套件系列名稱。請勿使用包含版本號和架構欄位的 PackageFullName,也不要直接填入開始功能表顯示的名稱。若要查詢其他應用,可先列出目前使用者的套件,再依據 Name 搜尋:
Get-AppxPackage |
Sort-Object Name |
Select-Object Name, PackageFamilyName
2. 新增指定應用並確認結果
以下指令會自動讀取 Microsoft Store 的套件系列名稱,避免手動複製時夾帶空格。若找不到套件,指令會明確停止新增,不會傳入空白參數:
$store = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -eq $store) {
Write-Error "找不到目前使用者的 Microsoft.WindowsStore 套件。"
} else {
CheckNetIsolation.exe LoopbackExempt -a "-n=$($store.PackageFamilyName)"
}
CheckNetIsolation.exe LoopbackExempt -s
-a 表示新增,-s 表示列出目前的豁免項目。輸出可能包含套件名稱或對應的 AppContainer SID;若要核對 SID,可執行 Get-AppContainerProfile -Name *。新增成功後,請完全結束 Microsoft Store,再重新啟動並重試原本的操作。
3. 撤銷這次新增的項目
$store = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -ne $store) {
CheckNetIsolation.exe LoopbackExempt -d "-n=$($store.PackageFamilyName)"
}
CheckNetIsolation.exe LoopbackExempt -s
-d 會刪除指定項目。復原時只撤銷這次變更,避免使用清除所有豁免的指令而影響其他應用。應用程式解除安裝後重新安裝、套件識別資訊變更或系統重設後,請重新查詢實際狀態,不要只依據先前執行成功的紀錄判斷。
方法三:使用 TUN 接管不讀取系統代理的應用
如果目標應用不讀取系統代理,新增回環豁免也不會讓它自動連線至 127.0.0.1:7890。此時可考慮使用支援 mihomo TUN 的用戶端,讓應用直接連線至實際目標位址,再由虛擬網路介面接管流量。這會改變流量進入核心的方式,並非取消 Windows 的所有網路隔離政策。
- 先關閉系統代理,暫時避免應用繼續嘗試連線本機代理連接埠。
- 依照用戶端提示安裝或啟動服務模式,再啟用「TUN 模式」。在 Windows 建立虛擬介面和設定路由,通常需要相應權限。
- 暫時結束其他 VPN 或同類型的虛擬網卡代理,保留原有設定紀錄,不要直接刪除系統路由。
- 完全重新啟動目標應用,並在連線頁面查看目標位址、規則和代理群組。
- 若沒有連線記錄,請繼續檢查 TUN 路由、DNS 和應用本身的網路權限;若已有記錄,則依據命中的規則進一步排查。
若你直接維護 mihomo 設定,以下列出常見的 TUN 欄位。請將它們合併至現有設定,不要用這幾行取代整份訂閱。若用戶端會透過介面產生 TUN 設定,建議優先使用介面,避免執行時覆寫與手動設定互相衝突。
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
auto-route 用於自動設定流量路由,auto-detect-interface 用於識別出口介面。dns-hijack 的設定只針對符合條件的傳統 DNS 流量,不代表會接管所有加密 DNS。也請確認現有的 dns 設定可正常使用,且目前的用戶端與核心支援所選的協定堆疊。
TUN 並非所有商店應用問題的萬用解法。AppContainer 權限限制、組織政策、應用本身的代理實作,以及背景服務的網路行為,都可能影響連線。若應用仍明確連線至本機 HTTP 代理,回環限制可能依然存在,因此測試 TUN 時,務必關閉系統代理並重新啟動應用。
如何選擇這三種方法:先縮小變更範圍,再確認結果
| 方法 | 適用情境 | 確認與復原方式 |
|---|---|---|
| 用戶端內建回環工具 | 應用會讀取系統代理,且用戶端提供 UWP 管理選項 | 查詢豁免清單;取消勾選目標應用並儲存 |
| CheckNetIsolation | 需要指定特定套件、確認狀態或撤銷單一授權 | 使用 -s 查詢;使用 -d 刪除指定項目 |
| TUN 模式 | 應用不讀取系統代理,或需要接管更多網路流量 | 檢查連線記錄與路由;關閉 TUN 並還原原本的流量接管方式 |
建議先確認本機連接埠可用,再為單一目標應用新增回環豁免。若應用仍沒有任何請求進入核心,再單獨測試 TUN。每次只變更一項設定,否則即使連線恢復,也很難判斷是哪個步驟起了作用。
仍無法連線?依照記錄所處階段繼續排查
沒有連線記錄
- 確認應用是否確實重新啟動,以及修改的是否為目前使用者所用的套件。
- 檢查用戶端重新啟動後,系統代理連接埠是否有所變更,以及是否有其他代理程式覆寫 Windows 設定。
- 由公司或學校管理的裝置,可能會限制回環豁免、虛擬網卡或路由變更,請遵循裝置管理政策。
有連線記錄,但使用 DIRECT
回環通道已不再是首要疑點。請查看命中的規則類型、規則內容和策略群組選擇,確認該網域應該直連還是使用代理。Microsoft Store 的頁面、登入和下載可能涉及不同網域及背景服務,不建議只為了解決單次失敗,就強制讓所有 Microsoft 網域使用相同策略。
已使用代理,但登入或下載仍失敗
分別記錄發生問題的步驟:開啟商店首頁、登入帳戶、取得下載位址,以及實際下載與安裝套件。首頁能正常開啟,不代表下載服務使用相同的網路路徑。此時再檢查節點連線、DNS 解析結果、系統時間和憑證錯誤。不要把 netsh winhttp reset proxy 當成通用解法,因為 WinHTTP 設定與目前使用者的系統代理是兩套不同設定。
排查完成後,只保留確實需要的單項豁免,並撤銷暫時性變更。如果只是要讓會讀取系統代理的 UWP 應用連線本機代理,回環豁免通常比長期啟用整台裝置的 TUN 更容易確認;若多個程式都忽略系統代理,再評估 TUN 對整體路由和 DNS 的影響。