Windows Microsoft Store 應用無法使用 Clash 代理?解除 UWP 回送限制教學
說明 UWP 網路隔離如何阻擋本機回送,並示範使用用戶端內建工具或 CheckNetIsolation 指令,解除 Microsoft Store 應用的限制。
先判斷:是否遭到本機回送限制
如果瀏覽器能上網,只有某個 Microsoft Store 應用無法連線,才建議優先檢查回送限制。若瀏覽器也無法開啟網站,請先確認設定檔已啟用、節點可用,且代理連接埠正在監聽。回送豁免無法修復失效的訂閱、錯誤的密碼或無法連線的伺服器。
UWP 是 Windows 的應用程式平台之一。這類應用通常在 AppContainer 中執行,也就是受限制的隔離環境。本機回送是指應用程式連線至本機位址,例如 127.0.0.1 或 ::1。Clash 的本機代理常監聽這些位址,因此即使系統代理已指向 Clash,隔離環境中的應用程式仍可能無法連線。
不過,從 Microsoft Store 安裝,不代表一定是 UWP 應用程式。Microsoft Store 也會提供傳統桌面程式和封裝式桌面程式。請依應用程式類型、代理設定和連線記錄判斷,不要把所有商店應用程式的網路問題都歸因於回送限制。
| 觀察到的狀況 | 優先檢查項目 | 下一步 |
|---|---|---|
| 瀏覽器和目標應用程式都無法連線 | 核心、連接埠、節點和規則 | 先確認本機代理連線正常 |
| 瀏覽器正常、隔離應用程式失敗,且 Clash 沒有相關連線 | 回送限制,或應用程式未使用系統代理 | 為目標套件新增豁免後重新測試 |
| Clash 已收到應用程式請求,但連線逾時 | 比對命中的策略、節點、DNS 和遠端服務 | 查看連線詳細資料,不要反覆新增豁免 |
| 商店介面可用,但下載工作失敗 | 下載服務和背景元件的連線方式 | 分辨前景介面與背景下載流量 |
操作前:確認系統代理和本機連接埠
先記下實際使用的連接埠,再解除隔離。以下以 127.0.0.1:7890 為例,這只是示範位址,並非所有用戶端的預設值。HTTP 連接埠用來接收 HTTP 代理要求;混合連接埠通常同時支援 HTTP 和 SOCKS 要求。Windows 手動代理應填入支援 HTTP 代理的連接埠,勿誤填僅提供 SOCKS 服務的連接埠。
- 開啟用戶端,確認已選取可用的設定檔,並在連接埠設定或執行中的設定檔內查看
port、mixed-port欄位。請以目前生效的設定為準。 - 啟用用戶端的「系統代理」。在 Windows 11 中,前往「設定」→「網路和網際網路」→「Proxy」→「手動 Proxy 設定」→「編輯」,確認位址和連接埠。
- 在 Windows 10 中,前往「設定」→「網路和網際網路」→「Proxy」,查看「使用 Proxy 伺服器」。用戶端可能會自動填入這些值,檢查時不必再手動修改。
- 先用瀏覽器測試已知可正常連線的 HTTPS 網頁,再查看用戶端的「連線」或「記錄」面板。如果瀏覽器使用獨立的代理擴充功能,測試成功不代表 Windows 系統代理正常。
使用指令確認連接埠正在監聽
在 PowerShell 中執行以下指令。若實際連接埠是 7897,請將指令中的 7890 改成 7897。若出現監聽記錄,表示本機有程式正在監聽該連接埠;仍需確認該程式確實是目前使用的核心。
Get-NetTCPConnection -State Listen -LocalPort 7890 |
Select-Object LocalAddress, LocalPort, OwningProcess
Test-NetConnection -ComputerName 127.0.0.1 -Port 7890
TcpTestSucceeded : True 只表示這次 TCP 連線已成功建立,不代表遠端網站或節點正常。PowerShell 通常不在目標應用程式的隔離環境中執行,因此這項測試也無法證明 UWP 已獲准存取回送位址。
方法一:使用用戶端內建的 UWP 工具
如果用戶端提供 UWP 工具,優先針對單一應用程式勾選。部分 Windows 用戶端內建回送豁免介面,入口名稱可能是「UWP 回送」、「Loopback」或「UWP Loopback」。這是圖形化用戶端的附加功能,並非 Clash 或 mihomo 核心提供的通用選單。
例如,舊版 Clash for Windows 0.20.x 可在「General」頁面找到「UWP Loopback」入口。這個路徑只適用於辨識既有安裝,不能直接套用到其他用戶端。若目前使用的用戶端沒有相同入口,請直接使用下一節的 Windows 指令。
- 開啟 UWP 回送工具。如果出現 Windows 權限確認,請先確認操作是由目前用戶端附帶的工具發起,再允許提升權限。
- 在應用程式清單中找到目標應用程式。清單名稱可能與開始功能表中的名稱略有不同,必要時可比對發行者和套件名稱。
- 只勾選需要使用本機代理的應用程式,再按一下儲存或套用。不同工具的按鈕可能標示為「Save Changes」或「Apply」。
- 完全結束目標應用程式,確認它沒有留在背景執行,再重新開啟並執行一次需要連線的操作。
- 前往 Clash 的連線或記錄面板,確認是否出現新的目標網域要求。不要只根據應用程式首頁的快取內容判斷是否成功。
方法二:使用 CheckNetIsolation 新增回送豁免
Windows 內建的 CheckNetIsolation 可用來查詢及修改豁免清單。以下以 Microsoft Store 應用程式套件為例。請在目前的使用者帳戶中,以系統管理員身分開啟 PowerShell;在 Windows 11 中,也可以按右鍵點選開始按鈕,再選擇「終端機(系統管理員)」。如果使用另一位系統管理員的帳戶憑證啟動終端機,請留意查詢到的應用程式套件是否屬於目標使用者。
步驟一:查詢正確的應用程式套件系列名稱
指令需要的是 PackageFamilyName,中文常稱為「套件系列名稱」。它不是桌面捷徑名稱,也不是包含版本號碼和架構的 PackageFullName。先查詢目前使用者安裝的 Microsoft Store 應用程式套件:
Get-AppxPackage -Name Microsoft.WindowsStore |
Select-Object Name, PackageFamilyName
常見結果中的套件系列名稱是 Microsoft.WindowsStore_8wekyb3d8bbwe,但實際操作仍以本機輸出為準。若目標不是 Microsoft Store 本身,可用部分套件名稱搜尋,例如查詢 Xbox 相關套件:
Get-AppxPackage -Name "*Xbox*" |
Select-Object Name, PackageFamilyName
萬用字元搜尋可能會傳回多筆結果。不要把所有結果都加入清單,也不要將顯示名稱直接當作套件系列名稱。如果查詢沒有輸出,請先確認應用程式已安裝在目前帳戶中,並確認它確實是可用此方法識別的應用程式套件。
步驟二:為目標套件新增豁免
以下 PowerShell 程式碼會讀取目前使用者的 Microsoft Store 套件,並將它加入回送豁免清單。程式碼中的空值檢查可避免應用程式未安裝時仍繼續執行;若要為其他應用程式操作,請將 Microsoft.WindowsStore 改成已確認無誤的套件名稱。
$package = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -eq $package) {
throw "目前使用者找不到 Microsoft.WindowsStore 應用程式套件。"
}
$family = $package.PackageFamilyName
CheckNetIsolation.exe LoopbackExempt -a "-n=$family"
-a 代表新增,-n 後方接套件系列名稱。如果系統顯示拒絕存取,請先確認終端機是否已提升為系統管理員權限。不要停用系統安全功能來繞過權限要求。
步驟三:查看清單並重新啟動應用程式
CheckNetIsolation.exe LoopbackExempt -s
-s 用來顯示目前的豁免清單。確認清單中包含目標套件系列名稱;部分項目也可能以安全性識別碼顯示。指令顯示新增成功後,請關閉並重新開啟目標應用程式,再觸發新的網路要求。必要時可登出後重新登入,排除舊處理程序仍在背景執行的影響。
如何確認設定生效,以及安全撤銷
同時查看應用程式的結果和 Clash 連線記錄。判斷設定是否有效,最好比較修改前後相同的操作,而不是只看指令是否執行成功。測試期間請維持相同節點和設定檔,避免同時切換多項條件。
- 記下修改前的具體狀況,例如「商店搜尋失敗」,不要只寫「無法上網」。
- 為目標套件新增回送豁免,然後完全結束並重新開啟應用程式。
- 重複相同的搜尋或重新整理操作,確認應用程式是否取得新的伺服器回應。
- 在 Clash 中比對對應時間的連線、網域和策略。在規則模式下命中
DIRECT,表示要求被指定為直連,不代表回送設定失敗。
不再需要時,依套件移除豁免
撤銷時使用 -d。以下仍以 Microsoft Store 為例,並重新查詢套件系列名稱,因此不必依賴先前終端機工作階段中的變數:
$package = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -eq $package) {
throw "目前使用者找不到 Microsoft.WindowsStore 應用程式套件。"
}
$family = $package.PackageFamilyName
CheckNetIsolation.exe LoopbackExempt -d "-n=$family"
CheckNetIsolation.exe LoopbackExempt -s
移除後再次查看清單,確認目標項目已刪除。不要為了撤銷單一應用程式的設定而清空所有豁免;其他應用程式、開發環境或偵錯工具可能也需要現有項目。重新安裝應用程式後,套件系列名稱可能改變,請重新確認;不能只因舊項目仍在,就認定新安裝的應用程式也已獲得授權。
新增豁免後仍無法使用代理:沿著流量路徑繼續排查
系統代理、全域模式和 TUN 是不同層級的設定
「全域模式」不會強制每個處理程序都連線到 Clash。它主要決定已進入核心的流量要使用哪個出口。如果應用程式根本沒有使用系統代理,切換全域模式也無法讓流量自動進入核心。請先分辨「要求根本沒有送入」和「送入後走錯出口」。
TUN 是透過虛擬網路介面接管流量的方式。使用 mihomo 的用戶端通常可在相關設定中啟用,但是否涵蓋目標流量,仍取決於路由、DNS、權限和排除項目。啟用 TUN 不等於取得回送豁免,也無法保證解決所有 Microsoft Store 應用程式的問題。若要測試 TUN,請先儲存目前設定,每次只變更一項條件,並檢查連線記錄。
前景介面和背景下載可能由不同處理程序負責
Microsoft Store 的頁面要求、應用程式下載和更新工作可能透過不同元件處理。為商店前景套件新增豁免後,不能據此推斷背景服務也會使用同一位使用者的系統代理。若遇到「頁面能開啟、下載仍失敗」,請繼續查看 Windows 下載服務、網路錯誤和實際連線記錄,不要不斷新增不相關的應用程式套件。
不要把 WinHTTP 設定當成通用修復方式
Windows 使用者代理設定和 WinHTTP 代理設定並非完全相同的機制。部分程式和系統服務會透過 WinHTTP 使用網路;修改其代理設定可能影響其他工作。可用以下唯讀指令查看目前設定,但在確認要求來源之前,不應貿然匯入或覆寫設定。
netsh winhttp show proxy
如果記錄中已出現目標要求,下一步請檢查網域解析、命中的規則和節點是否可用。如果完全沒有要求,請繼續確認應用程式是否使用獨立代理、是否由其他處理程序連線,以及它是否確實屬於會受回送限制的應用程式類型。需要比對欄位時,可參閱YAML 手冊;一般連線問題可先查看常見問題。