Windows 商店應用無法透過 Clash 代理:解除 UWP 回環限制的方法

說明 Microsoft Store 應用程式預設無法連線至本機 127.0.0.1 代理埠,介紹 Clash 內建的 UWP Loopback 工具與手動放行方式,並說明如何確認設定生效。

先確認問題是否為 UWP 回環限制

典型情況是:瀏覽器、Git、即時通訊工具都已能透過 Clash 存取網路,但 Microsoft Store 一直顯示「重試」、頁面圖片載入不完整,或應用程式下載長時間停留在「正在取得授權」。同一台電腦上的部分 Xbox、相片、郵件等商店應用程式也可能連線失敗。此時 Clash 的連線面板看得到瀏覽器流量,卻看不到對應商店應用程式的連線。

這類差異通常不是節點速度造成的。傳統 Win32 程式可以直接連線至本機監聽位址,而採用 AppContainer 網路隔離模型的 UWP 或商店應用程式,預設會受到回環存取限制。Clash 的系統代理通常指向本機位址,例如 127.0.0.1:7890。應用程式要使用這個代理,第一步就是存取本機回環介面;如果 Windows 在這一層攔截連線,請求尚未進入 Clash,自然也不會出現在連線紀錄中。

三個快速判斷條件

  1. Clash 已啟動,目前設定中至少有一個可用節點,瀏覽器瀏覽網頁正常。
  2. 用戶端已開啟系統代理,Windows 代理位址指向 127.0.0.1,埠號與 Clash 實際監聽的埠一致。
  3. Microsoft Store 重新整理失敗時,Clash 的「連線」或「日誌」頁面沒有新增相應請求。

如果三項同時成立,可以繼續處理 Loopback Exempt,也就是為指定應用程式新增本機回環存取豁免。它只會變更該 AppContainer 是否能連線至本機位址,不會取代代理規則,也不會自動選擇節點。最終流量仍由 Clash 目前的規則模式、策略群組與 DNS 設定決定。

為什麼回環限制會擋住本機 Clash 埠

Windows 商店應用程式通常執行於具有應用程式身分的隔離容器中。系統會依照應用程式套件身分分配網路能力,並限制容器直接存取本機回環位址。這項設計是為了隔離應用程式與本機服務,避免應用程式任意探測執行於 127.0.0.1 上的埠。

Clash 的 HTTP、SOCKS 或 mixed-port 監聽器正是本機服務。常見設定會將混合埠設為 7890

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

開啟系統代理後,Windows 會將支援系統代理的請求交給 127.0.0.1:7890。一般桌面程式可以建立這條本機連線;受限制的 AppContainer 則可能在抵達埠之前就被系統拒絕。因此,即使節點延遲只有 45 ms,Microsoft Store 仍可能無法載入,而 Clash 日誌中也看不到一次完整的代理交握。

檢查位置 正常結果 異常意義
瀏覽器連線 網頁正常開啟 Clash 基礎連線仍有問題
本機監聽埠 127.0.0.1:7890 正在監聽 埠設定或用戶端啟動異常
Clash 連線面板 商店重新整理時出現新連線 完全沒有紀錄時,優先檢查回環限制
規則命中 請求進入指定策略群組 進入 Clash 後仍失敗,應檢查規則、DNS 或節點

回環豁免處理的是「應用程式能否連線至本機代理」這一段。它不會處理訂閱失效、策略群組選錯、規則誤判或遠端節點逾時。排查時將連線拆成「應用程式 → 本機 Clash 埠 → 代理規則 → 節點 → 目標服務」,可以避免反覆更換節點,卻沒有觸及真正的阻斷位置。

使用 Clash 用戶端內建的 UWP Loopback 工具

部分 Windows 圖形用戶端提供 UWP Loopback 管理入口,底層仍是呼叫 Windows 的回環豁免機制。不同用戶端與版本的選單名稱略有差異,常見路徑包括「設定」→「系統設定」→「UWP Loopback」,或「一般」→「UWP 回環」→「啟動工具」。舊版 Clash for Windows 通常將入口放在 General 頁面,按鈕名稱可能顯示為 UWP Loopback。

圖形介面操作步驟

  1. 先退出 Microsoft Store、Xbox 等需要處理的應用程式,避免舊連線持續佔用資源。
  2. 開啟 Clash 用戶端,確認系統代理已啟用,記下「設定」→「埠設定」中的 mixed-port 或 HTTP 埠。
  3. 進入「設定」→「系統設定」→「UWP Loopback」。如果用戶端要求系統管理員權限,確認後繼續。
  4. 等待工具列舉應用程式套件,在清單中找到 Microsoft Store。其套件身分通常包含 Microsoft.WindowsStore
  5. 勾選 Microsoft Store;如果 Xbox、相片或其他商店應用程式也有相同問題,可依實際需求分別勾選。
  6. 點選「儲存」、「套用」或「Save Changes」,等待工具提示設定完成。
  7. 重新開啟 Microsoft Store,進入任一應用程式詳細資料頁並重新整理,再觀察 Clash 的連線面板。

應用程式清單中可能同時出現顯示名稱相近的項目。判斷時應優先查看套件名稱或 Package Family Name,而不要只看圖示。Microsoft Store 常見的套件族名稱是 Microsoft.WindowsStore_8wekyb3d8bbwe;Windows 應用程式安裝程式通常是 Microsoft.DesktopAppInstaller_8wekyb3d8bbwe。兩者用途不同,需要處理哪個就放行哪個。

儲存後通常不需要重新啟動 Windows,但應完全關閉並重新開啟目標應用程式。如果 Microsoft Store 仍保留舊狀態,可以在工作管理員中結束對應程序,再啟動一次。也可以按下 Win + R,執行 wsreset.exe 清理商店快取;此步驟用於處理快取與介面狀態,不負責新增回環豁免。

用戶端沒有入口時,以命令列手動放行

Windows 內建的 CheckNetIsolation.exe 可以查看、新增及刪除 AppContainer 回環豁免。手動操作的關鍵是取得準確的 Package Family Name,不能只將應用程式顯示名稱填入命令。

第一步:查詢 Microsoft Store 套件族名稱

以系統管理員身分開啟 PowerShell,執行:

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

常見輸出如下,實際結果應以目前電腦為準:

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

如果要尋找名稱中包含 Xbox 的應用程式,可以使用:

Get-AppxPackage *Xbox* |
  Select-Object Name, PackageFamilyName

第二步:新增回環豁免

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

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

參數 -a 代表新增,-n 後方必須是完整的 Package Family Name。命令執行成功後,關閉 Microsoft Store,再重新開啟測試。

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

CheckNetIsolation.exe LoopbackExempt -s

輸出清單中應能找到剛才新增的套件身分。如果清單中沒有目標項目,可能是終端機權限不足、套件族名稱拼寫錯誤,或複製時帶入多餘空格。請重新從 PowerShell 查詢結果複製一次,再執行新增命令。

需要撤銷時刪除豁免

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

-d 代表刪除。修改後再次執行 LoopbackExempt -s,即可確認目標項目是否已移除。回環豁免會依應用程式套件身分儲存;應用程式更新通常不會變更套件族名稱,但解除安裝後重新安裝、系統移轉或應用程式套件身分變更時,建議重新檢查清單。

放行後如何確認 Microsoft Store 已透過 Clash 連線

只看到商店頁面恢復並不足以判斷流量路徑,因為頁面內容可能來自快取。更可靠的驗證方式,是同時觀察應用程式行為、Clash 連線紀錄與規則命中結果。

驗證一:觀察連線面板

  1. 開啟 Clash 用戶端的「連線」頁面,並清除現有篩選條件。
  2. 完全關閉 Microsoft Store,然後重新開啟。
  3. 進入一個之前未開啟過的應用程式詳細資料頁,切換螢幕擷取畫面或點選「檢查更新」。
  4. 查看連線面板是否出現新的 HTTPS 連線,目標網域可能屬於 Microsoft 的商店、授權、內容傳遞或帳戶服務。

如果請求已經出現,表示 UWP 應用程式至少能夠存取本機 Clash 埠。接下來要查看該連線命中了哪條規則與策略群組。如果連線顯示為 DIRECT,這是規則結果,不代表回環豁免失敗;如果希望特定網域經過代理,應檢查目前的規則集,而不是重複新增豁免。

驗證二:檢查埠與系統代理是否一致

在 PowerShell 中檢查常用的 7890 埠:

Get-NetTCPConnection -LocalPort 7890 -State Listen

如果沒有結果,回到 Clash 的「設定」→「埠設定」,查看實際的 mixed-port。部分設定使用 78971080 或其他埠。在 Windows 的「設定」→「網路和網際網路」→「代理」中,位址與埠號必須與用戶端目前的監聽值一致。埠衝突導致 Clash 改用其他數值時,舊的系統代理設定也會造成商店連線失敗。

驗證三:進行可重複的商店操作

一次下載成功只能表示當時連線可用。建議連續測試兩次,並在關閉、重新開啟 Microsoft Store 後再測試一次。這樣可以排除快取、既有連線與短暫網路恢復造成的誤判。

仍然無法連線時,依固定順序排查

新增回環豁免後,問題位置通常會從「應用程式無法存取本機埠」轉移至 Clash 內部或上游網路。此時不要重複勾選同一個應用程式,應依照以下順序逐層確認。

1. 確認設定與埠正在生效

2. 檢查規則模式與策略群組

規則模式會逐一比對目標網域。Microsoft Store 涉及帳戶、授權、應用程式中繼資料與內容傳遞等多項服務,不能只依據單一網域判斷整體結果。連線面板顯示請求後,請重點查看 Rule、Chains 或策略群組欄位。如果規則將部分服務送往不可用的節點,商店可能呈現圖片可見但下載失敗。

暫時診斷時,可以將目標策略群組切換至已確認可用、延遲約 50 至 150 ms 的節點,再重試商店更新。全域模式可用於短時間比對,但測試結束後應恢復日常使用的規則模式,繼續定位具體規則。

3. 檢查 DNS

當連線已進入 Clash,但日誌出現網域解析失敗、逾時或回傳異常位址時,應檢查 DNS 設定。使用 mihomo 核心時,確認設定中的 dns.enable、監聽位址、nameserver 與增強模式彼此相容。如果啟用 Fake-IP,還要確保系統流量確實由 Clash 接管,避免應用程式使用另一套 DNS 路徑,造成解析與連線不一致。

4. 檢查防火牆與安全性原則

本機防火牆可能會阻止 Clash 監聽埠,或限制應用程式容器的網路。先確認 Clash 主程式與所使用的核心能在目前網路設定檔中執行,再查看是否存在針對 127.0.0.1:7890 或對應程序的阻擋規則。公司裝置也可能透過群組原則管理 Microsoft Store、代理與 AppContainer 網路能力;在這種情況下,本機修改可能會被原則覆寫。

5. 區分系統代理與 TUN 模式

系統代理模式依賴應用程式主動讀取 Windows 代理設定,因此 UWP 回環豁免與本機代理埠直接相關。TUN 模式則透過虛擬網路介面接管更多流量,對不遵循系統代理的程式更有效。啟用 mihomo TUN 後,部分商店應用程式可能不再依賴傳統的 127.0.0.1 HTTP 代理路徑。

但 TUN 不是回環問題的通用替代方案。它還涉及系統管理員權限、服務模式、路由、DNS 劫持與防火牆相容性。如果目前只有 Microsoft Store 異常,而其他程式透過系統代理穩定運作,應優先新增目標應用程式的 Loopback Exempt,變更範圍較小。只有多類程式都不遵循系統代理,或確實需要接管 UDP 等流量時,再評估 TUN 模式。

常見誤區與處理結論

開啟系統代理就等於自動解除 UWP 限制

系統代理只會告知應用程式代理伺服器的位置。AppContainer 能否存取這個本機位置,則由回環原則另行決定。兩者都必須分別確認。

埠號寫成 7890 就一定正確

7890 是常見預設值,不是固定要求。設定檔、用戶端覆寫設定或埠被占用,都可能改變實際監聽值。應以目前用戶端介面與監聽結果為準。

放行 Microsoft Store 就會同時涵蓋所有商店應用程式

豁免會依套件族名稱記錄。Microsoft Store、應用程式安裝程式、Xbox 與其他應用程式通常擁有不同的套件身分,需要依實際故障分別查詢與新增。

連線進入 Clash 就代表完整代理鏈路可用

連線出現只證明應用程式已抵達本機代理。後續仍可能因規則命中、DNS、節點交握、遠端服務限制或網路原則而失敗。繼續查看日誌中的錯誤階段,才能判斷下一步。

最後可以依照一個簡化結論處理:一般桌面程式正常、商店應用程式完全沒有 Clash 連線紀錄時,檢查 UWP 回環豁免;已有連線紀錄但請求失敗時,改查埠、規則、DNS 與節點;多個程式同時異常時,回到 Clash 基礎連線與本機網路排查。依照這個順序操作,通常能將問題限定在明確的層級。

下載 Clash 用戶端 Windows、macOS、Android、iOS、Linux