Windows UWP 應用程式無法使用 Clash 代理:解除回環限制的兩種方法

說明 Microsoft Store 應用程式為何預設無法連線至本機代理,並介紹使用內建 UWP 回環工具或 CheckNetIsolation 指令解除限制及驗證方法。

先判斷是否為 UWP 回環限制

瀏覽器能透過 Clash 正常存取網路,但 Microsoft Store、Xbox、部分郵件或串流應用程式持續顯示連線失敗,常見原因不是節點失效,而是 Windows 的 AppContainer 網路隔離。UWP 應用程式通常在 AppContainer 沙箱中執行,預設無法任意連線至本機回環位址,也就是 127.0.0.1localhost

Clash、Clash Meta(現稱 mihomo)及其圖形化客戶端通常會在本機監聽代理連接埠。例如混合連接埠 mixed-port: 7890 對應 127.0.0.1:7890。啟用系統代理後,一般桌面程式可以連線至這個位址;受到限制的商店應用程式卻可能無法連線,因此出現「網頁正常、商店應用程式離線」的差異。

符合回環問題的典型情況

  • Edge、Firefox 或一般桌面軟體可以透過代理存取外部網站。
  • Microsoft Store 長時間停留在載入狀態,或顯示無法連線至網路。
  • Xbox、意見反應中心、舊版郵件等封裝應用程式連線失敗。
  • 關閉 Clash 的系統代理後,應用程式可以直接連線;重新啟用後又再次失敗。
  • Clash 記錄中看不到該應用程式發出的連線紀錄。

先確認本機代理連接埠

開啟客戶端的「設定」→「連接埠設定」或「設定」→「Mihomo 設定」,確認目前使用的是 HTTP、SOCKS 還是混合連接埠。常見值為 7890,但實際連接埠也可能是 78977899 或自訂值。Windows 系統代理中的位址必須與客戶端監聽的值一致。

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

mixed-port 表示同一個連接埠同時接收 HTTP 與 SOCKS 連線。這裡的 allow-lan 控制區域網路裝置是否可以存取代理,與本機 UWP 回環權限不是同一個開關。將它改為 true 並不能取代回環豁免。

方法一:使用客戶端內建的 UWP 回環工具

圖形化客戶端的內建工具更適合一般使用者。它通常會列出已安裝的 AppContainer 應用程式,勾選後呼叫 Windows 系統介面寫入回環豁免。不同客戶端的選單名稱略有差異,但核心操作相同。

常見選單路徑

  • Clash Verge Rev 2.x:進入「設定」→「系統設定」,尋找「UWP 回環」或「Loopback」入口。
  • 保留經典介面的客戶端:進入「一般」或「General」,點擊「UWP Loopback」旁的啟動按鈕。
  • 部分 mihomo 客戶端:進入「設定」→「網路」,尋找「解除 UWP 回環限制」。

如果目前的客戶端沒有這個入口,不代表 mihomo 核心缺少代理功能。回環豁免屬於 Windows 權限設定,通常由圖形介面或系統指令處理,不是代理核心設定檔中的欄位。

具體操作步驟

  1. 先讓 Clash 客戶端保持執行,並確認系統代理已啟用。
  2. 進入客戶端的 UWP 回環工具,等待應用程式清單載入完成。
  3. 找到需要使用代理的應用程式,例如 Microsoft Store 或 Xbox。
  4. 勾選目標應用程式,不必一次選取所有項目。
  5. 點擊「儲存」、「套用」或「解除限制」。系統跳出權限確認時,請允許執行。
  6. 完全關閉目標應用程式後再重新開啟。僅將視窗最小化通常不會重新建立網路程序。

應勾選哪些應用程式

按需授權比全部勾選更容易排除問題。先勾選目前發生問題的應用程式,儲存後立即驗證。若 Microsoft Store 恢復正常,而另一個應用程式仍然失敗,再為第二個套件新增豁免。如此可確認哪項修改產生效果,也方便日後撤銷。

目標 建議操作 驗證重點
Microsoft Store 勾選對應的商店套件 首頁內容與應用程式詳細資訊是否能載入
Xbox 分別檢查主程式與身分元件 登入、商店與下載佇列
意見反應中心 僅勾選意見反應中心套件 帳戶狀態與內容清單
第三方商店應用程式 依顯示名稱與套件族名稱定位 重新啟動後觀察 Clash 記錄

方法二:使用 CheckNetIsolation 精確新增豁免

CheckNetIsolation 是 Windows 內建的命令列工具,可查看、新增與刪除 AppContainer 回環豁免。當客戶端沒有內建入口、圖形化清單載入失敗,或需要明確記錄修改內容時,這種方法相當適合。

指令中的關鍵參數是 Package Family Name,中文通常稱為「套件族名稱」,縮寫為 PFN。它不是開始選單中看到的應用程式標題,也不是安裝目錄名稱。輸入錯誤的套件族名稱時,指令可能無法套用至目標應用程式。

第一步:查詢應用程式的套件族名稱

以滑鼠右鍵點擊開始選單,開啟「終端機(系統管理員)」或「Windows PowerShell(系統管理員)」。查詢 Microsoft Store 可執行:

Get-AppxPackage -Name Microsoft.WindowsStore |
  Select-Object Name, PackageFamilyName

常見的輸出結構如下,實際後綴由發行者識別碼決定:

Name                   PackageFamilyName
----                   -----------------
Microsoft.WindowsStore Microsoft.WindowsStore_8wekyb3d8bbwe

如果不知道內部名稱,可以依標題關鍵字篩選所有套件:

Get-AppxPackage |
  Where-Object {
    $_.Name -like "*Store*" -or
    $_.PackageFamilyName -like "*Store*"
  } |
  Select-Object Name, PackageFamilyName

第二步:新增回環豁免

確認套件族名稱後,在系統管理員終端機中執行:

CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.WindowsStore_8wekyb3d8bbwe

參數 LoopbackExempt 表示管理回環豁免,-a 表示新增,-n 後方填入套件族名稱。執行完成後關閉 Microsoft Store,並在工作管理員中確認相關程序已結束,再重新啟動。

第三步:查看目前的豁免清單

CheckNetIsolation.exe LoopbackExempt -s

清單中出現目標套件的名稱或安全識別碼,表示豁免已寫入。如果指令回報成功,但應用程式仍無法連線,請繼續檢查系統代理連接埠、Clash 記錄與規則命中結果。

需要撤銷時刪除豁免

CheckNetIsolation.exe LoopbackExempt -d -n=Microsoft.WindowsStore_8wekyb3d8bbwe

-d 表示刪除。撤銷後重新啟動應用程式即可。系統更新或重新安裝應用程式後,套件註冊資訊可能會變更;如果問題再次出現,應重新查詢 PackageFamilyName,而不是直接重複使用舊指令。

確認應用程式流量是否確實進入 Clash

應用程式恢復載入不一定代表流量已按照預期透過代理傳送。部分要求可能直接連線,快取內容也可能讓頁面看起來正常。更可靠的方式是結合 Clash 連線記錄、規則命中情況與出口位址進行驗證。

觀察即時連線

  1. 將 Clash 模式維持在「規則」模式。
  2. 開啟客戶端的「連線」或「Connections」頁面。
  3. 清除篩選條件,記下目前的連線數量。
  4. 完全關閉目標 UWP 應用程式,再重新開啟並重新整理內容。
  5. 觀察是否出現新的網域、目標 IP、程序或策略群組記錄。

例如開啟 Microsoft Store 後,連線頁面應出現與 Microsoft 服務相關的請求,並顯示命中的規則與最終策略。不同系統版本、地區與帳戶狀態所使用的網域會有所變化,因此不應只依賴某個固定網域判斷。

暫時使用全域模式交叉驗證

如果規則模式下仍然失敗,可以暫時切換至「全域」模式並選擇可用節點。若應用程式在全域模式下恢復正常,表示回環連線已建立,後續問題更可能位於規則匹配、DNS 或節點可達性。測試完成後應切回「規則」模式,避免長期讓所有流量使用同一項策略。

比較三種結果

測試結果 較可能的原因 下一步
記錄中完全沒有新連線 回環豁免未生效或應用程式未重新啟動 重新查詢豁免清單並結束應用程式程序
有連線,但全部命中 DIRECT 規則將目標流量設為直連 檢查規則順序與策略群組選擇
有代理連線,但顯示逾時 節點無法使用或目標服務拒絕連線 切換節點並測試相同目標
全域模式正常,規則模式失敗 規則或 DNS 設定問題 找出命中的規則並檢查網域解析

仍然無法連線時檢查這五項

1. 系統代理連接埠與 mixed-port 不一致

假設 mihomo 監聽 127.0.0.1:7890,但 Windows 系統代理仍指向舊連接埠 7897,即使應用程式取得回環權限也無法建立連線。進入 Windows 11 的「設定」→「網路和網際網路」→「代理」,檢查手動代理是否由客戶端正確接管。

通常不建議同時手動填寫 Windows 代理並啟用客戶端的系統代理開關。兩處設定容易在重新啟動或切換連接埠後不同步。優先讓目前的客戶端統一管理,修改連接埠後關閉再重新啟用一次系統代理。

2. 客戶端未成功啟動核心

查看客戶端首頁或記錄,確認 mihomo 核心處於執行狀態。如果記錄出現連接埠遭佔用,應先關閉佔用程序,或將 mixed-port7890 改為其他空閒連接埠,並同步更新系統代理。

netstat -ano | findstr :7890

指令最後一欄是程序 PID。可在工作管理員的「詳細資料」頁面依 PID 找出程序。不要直接結束不熟悉的系統程序,先確認它是否屬於另一個代理客戶端或上次未退出的核心執行個體。

3. 規則將 Microsoft 服務分配至無法使用的策略

回環豁免只解決「應用程式能否連線至本機代理」,不會代替應用程式選擇節點。進入「連線」頁面查看請求命中了哪個策略群組。如果策略群組使用無法連線的節點、拒絕策略或錯誤的直連路徑,仍會顯示載入失敗。

測試時可以為對應策略群組手動選擇延遲穩定的節點。延遲測試成功只代表測試位址可達,不等於所有 Microsoft 服務都能存取,因此仍要結合實際連線狀態判斷。

4. DNS 解析結果異常

如果記錄中持續出現 DNS 逾時、網域解析失敗或目標位址為空,應檢查 mihomo 設定中的 dns.enable、上游 DNS 與工作模式。啟用 TUN 模式時,還要確認客戶端的服務模式或系統管理員權限已正常安裝,否則 DNS 劫持可能不會生效。

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - 1.1.1.1
    - 8.8.8.8

這段設定只是結構範例,不能脫離現有訂閱直接覆蓋。訂閱可能已經設定規則、備用解析與 Fake-IP 過濾清單。修改前應保留原有設定,並優先使用客戶端提供的覆寫功能。

5. 應用程式程序並未真正重新啟動

關閉視窗後,商店應用程式可能仍在背景執行。開啟工作管理員,在「處理程序」或「詳細資料」頁面結束對應工作,等待 5 秒後再啟動。也可以登出 Windows 帳戶後重新登入,讓 AppContainer 程序重新讀取權限。

常見問題

為什麼瀏覽器正常,Microsoft Store 卻顯示離線?

一般桌面瀏覽器可以連線至 127.0.0.1 上的 Clash 代理,但部分 AppContainer 應用程式預設受到回環限制。先為 Microsoft Store 新增回環豁免,再重新啟動應用程式。

解除回環限制後需要重新啟動電腦嗎?

多數情況不需要。完全結束目標應用程式程序後重新啟動即可。如果應用程式仍使用舊的網路狀態,可以登出帳戶或重新啟動 Windows 後再測試。

可以一次勾選所有 UWP 應用程式嗎?

技術上部分工具允許全選,但排除問題時更建議只處理確實需要代理的應用程式。按需新增有助於驗證效果,也方便日後透過 CheckNetIsolation.exe LoopbackExempt -s 核對清單。

切換 Clash 客戶端後需要重新設定嗎?

回環豁免由 Windows 儲存,通常不會因為更換客戶端而立即消失。不過新客戶端的監聽連接埠、系統代理與 TUN 設定可能不同,仍需確認 Windows 指向目前正在執行的代理連接埠。

CheckNetIsolation 回報成功,但應用程式仍無法連線怎麼辦?

依序檢查應用程式是否已徹底重新啟動、系統代理連接埠是否一致、Clash 連線記錄是否出現請求,以及請求命中的規則與策略。全域模式正常而規則模式失敗時,請重點檢查規則與 DNS。

處理順序總結

  1. 確認一般桌面程式可以透過 Clash 連線。
  2. 確認本機監聽連接埠與 Windows 系統代理一致。
  3. 使用客戶端內建工具為目標 UWP 應用程式新增回環豁免。
  4. 沒有圖形化入口時,使用 PowerShell 查詢套件族名稱,再執行 CheckNetIsolation
  5. 徹底結束並重新啟動目標應用程式。
  6. 在 Clash 連線頁面觀察請求、命中規則與最終策略。
  7. 仍然失敗時,再檢查節點、DNS、TUN 服務與連接埠佔用情況。

這類故障的關鍵,是將兩個問題分開處理:回環豁免決定應用程式能否連線至本機代理,Clash 設定則決定連線進入代理後如何解析、分流與轉送。先確認請求能進入記錄,再處理規則與節點,排查會更直接。

取得客戶端 查看全平台選擇