Windows UWP 應用無法使用代理?回環豁免設定與解除限制教學

了解 Windows 商店應用無法連線本機回環位址的原因,並使用內建工具或 CheckNetIsolation 指令為 UWP 應用新增豁免。

常見情況:瀏覽器正常,只有特定應用無法連線

Windows 已啟用系統代理,瀏覽器可以透過客戶端連上目標網站,但某個 UWP 應用持續顯示網路錯誤,客戶端的連線清單也看不到對應請求。這可能與 AppContainer 網路隔離有關。應用嘗試連線本機代理,例如 127.0.0.1:7890,卻在抵達 mihomo 核心之前就受到系統限制。

回環豁免解決的是「受隔離的應用能否連線本機服務」,與節點品質、訂閱失效或代理規則無關。確認問題出在這一層後,新增豁免才有幫助。透過 Microsoft Store 下載,也不代表應用一定是 UWP:商店中的傳統桌面程式或封裝的 Win32 程式,不一定會受到相同限制。

回環位址與 AppContainer 網路隔離

127.0.0.1 是 IPv4 回環位址,::1 是 IPv6 回環位址。連線至這些位址時,流量仍留在目前電腦中。客戶端會將 HTTP 或混合代理連接埠繫結至回環位址,應用再將請求送至該連接埠,由 mihomo 核心比對規則並建立對外連線。

UWP 應用通常在 AppContainer 隔離環境中執行。Windows 限制這類應用存取本機回環服務;即使系統代理指向本機,應用仍可能無法建立這段連線。CheckNetIsolation.exe 提供回環豁免機制,可為指定的應用程式容器解除相關限制。

豁免本身不會替應用設定代理,也不會新增應用程式資訊清單中的網路功能。如果應用忽略系統代理、使用獨立的網路元件,或受到企業政策限制,仍須另外處理對應問題。

操作前確認:代理連接埠與系統設定

確認目前的監聽連接埠

先在客戶端確認目前使用的設定與連接埠。以下以 7890 示範混合連接埠,不代表所有客戶端都預設使用此值。若實際連接埠是 7897,後續指令與系統設定都應使用 7897。

mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule

這段內容僅示範參數,並非完整設定,請勿用來覆寫現有訂閱。為本機 UWP 應用新增回環豁免,不必將監聽位址改為 0.0.0.0,也不必啟用「允許區域網路連線」。遠端訂閱更新可能會覆蓋直接寫入的參數,建議優先使用客戶端提供的持續性設定或覆寫功能。

確認 Windows 指向相同連接埠

  1. 在 Windows 11 中,依序開啟「設定」→「網路和網際網路」→「Proxy」→「手動設定 Proxy」→「使用 Proxy 伺服器」旁的「設定」。Windows 10 的路徑為「設定」→「網路和網際網路」→「Proxy」。
  2. 確認位址與連接埠符合目前客戶端的設定。如果系統代理由客戶端自動管理,請優先使用客戶端開關來調整,避免兩邊的設定互相覆蓋。
  3. 在 PowerShell 中執行以下指令,檢查連接埠是否正在監聽。若沒有輸出,請先啟動核心或修正連接埠,再處理應用豁免。
Get-NetTCPConnection -State Listen -LocalPort 7890 |
  Select-Object LocalAddress, LocalPort, OwningProcess

curl.exe --proxy http://127.0.0.1:7890 --head --max-time 15 https://example.com/

明確指定代理的 curl.exe 適合用來確認連接埠能否完成請求。收到 HTTP 回應表示這段測試連線已建立;若逾時,請接著檢查節點與記錄。此指令是在一般桌面程序中執行,測試成功不代表 UWP 回環限制已解除,也不能只憑回應判斷實際出口是否符合預期。

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

部分 Windows 客戶端提供回環豁免工具,選單名稱可能是「UWP 回環」、「Loopback」或「回環豁免」。功能入口會因客戶端及版本而異,不能將舊版的選單路徑套用到所有 mihomo 客戶端。

如果使用舊版 Clash for Windows,可前往「General」→「UWP Loopback」→「Launch Helper」開啟相應工具。該客戶端已停止維護,這裡僅供辨識既有環境,不建議為了使用此功能而安裝舊版客戶端。若目前的客戶端沒有同名選項,請直接使用下一節的 Windows 指令。

  1. 開啟工具,視需要確認系統提示的管理員權限。請核對發行者與程式來源,勿執行來源不明的「修復工具」。
  2. 在應用程式清單中找到發生問題的應用,並核對套件資訊,不要只憑相似的顯示名稱選取。
  3. 只勾選目標應用,再按工具提供的儲存或套用按鈕。只勾選而未儲存,通常不會將項目寫入豁免清單。
  4. 完全關閉目標應用後再重新開啟。若關閉視窗後應用仍在背景執行,可在工作管理員中結束對應工作後再測試。

圖形化工具通常只是包裝系統豁免機制。操作後仍可使用 CheckNetIsolation.exe LoopbackExempt -s 獨立確認結果。若工具中找不到應用,請先確認該應用是否安裝在目前帳戶,以及是否屬於適用的應用類型。

方法二:使用 CheckNetIsolation 為指定應用新增豁免

以管理員身分開啟終端機

在開始功能表搜尋「終端機」或「Windows PowerShell」,選擇「以管理員身分執行」。以下範例使用 PowerShell 語法。如果管理員驗證使用了另一個帳戶,請留意應用套件查詢的使用者範圍,避免將「目前使用者未安裝」誤認為程式不存在。

查詢 PackageFamilyName

回環豁免的 -n 參數需使用套件系列名稱 PackageFamilyName,不是桌面捷徑名稱,也不是包含版本與架構資訊的 PackageFullName。先列出目前使用者已安裝的套件:

Get-AppxPackage |
  Sort-Object Name |
  Select-Object Name, PackageFamilyName

以下以 Microsoft Store 套件示範篩選方式。排查其他應用時,請從上方清單找出對應套件,再替換查詢條件;不要替無關的應用新增權限。

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

常見結果中的套件系列名稱是 Microsoft.WindowsStore_8wekyb3d8bbwe,仍請以本機輸出為準。若查詢結果為空,請先確認使用者範圍與套件名稱;不要依照其他裝置的套件完整名稱猜測。

新增豁免並確認清單

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

CheckNetIsolation.exe LoopbackExempt -s

-a 代表新增,-s 代表列出現有豁免。清單可能同時顯示應用程式容器名稱與 SID,請確認其中包含目標套件。若出現存取遭拒,請確認終端機已使用提升權限開啟;若找不到應用程式容器,請重新檢查套件系列名稱與安裝狀態。

若已透過查詢準確選取目標套件,也可以在 PowerShell 中使用變數傳遞,減少手動複製錯誤:

$app = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -ne $app) {
    CheckNetIsolation.exe LoopbackExempt -a "-n=$($app.PackageFamilyName)"
} else {
    Write-Output "目前使用者找不到指定的應用程式套件。"
}

確認結果:分辨連線、規則與出口

驗證時請保持條件一致:使用相同網路、相同設定及相同目標操作。開啟客戶端的連線頁面,再於應用中重新整理實際發生問題的頁面或執行登入。不要只以應用首頁是否顯示快取內容判定成功。

觀察結果可能的問題層級下一步
豁免清單中沒有目標套件權限或套件名稱以管理員身分開啟終端機,重新查詢並新增
清單中已有目標套件,但仍沒有連線記錄應用未使用該代理,或尚未送出請求重新啟動應用,確認系統代理與應用程式網路設定
出現連線,但策略為 DIRECT規則分流查看命中的規則,確認是否應使用代理策略
連線套用代理策略後逾時節點、DNS 或目標網路查看核心記錄與所選節點狀態
網路請求成功,但帳戶操作仍失敗應用服務或帳戶地區檢查服務狀態、帳戶與錯誤碼

如果客戶端能顯示程序名稱,可用來協助辨識目標應用;若無法顯示,請搭配請求時間與網域判斷。若記錄中出現 DNS、TLS 或驗證錯誤,請沿著對應連線流程排查,不要重複新增相同豁免。暫時切換至全域模式只能用來判斷規則是否造成影響,測試後請恢復原本模式。

TUN 模式與回環豁免的適用範圍

系統代理會將代理位址提供給願意使用它的應用;TUN 模式則透過虛擬網路介面與路由接管符合條件的流量,兩者的連線方式不同。如果應用不讀取系統代理,回環豁免不會讓它自動開始使用代理,此時可評估客戶端的 TUN 模式。

不過,啟用 TUN 不代表一定能解除 AppContainer 的所有網路限制。如果應用仍直接連線至受限制的回環連接埠,仍須另外處理相關限制。TUN 能否成功接管流量,也會受到權限、路由、DNS、介面排除規則及其他 VPN 軟體影響。

撤銷豁免與後續維護

若不再需要透過本機代理連線,或已確認故障與回環無關,可以移除剛新增的豁免。以下沿用同一個範例套件,只撤銷這一項,不影響其他應用原有的設定:

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

CheckNetIsolation.exe LoopbackExempt -s

-d 代表刪除指定項目。執行後重新查看清單,確認目標項目已移除。排查前建議先儲存原始清單,以便分辨這次新增的項目與裝置原有設定。

若正常更新後的套件系列名稱未變,通常不必重新新增豁免;若解除安裝後重新安裝、更換發行管道或套件身分有所變更,則應重新查詢。建議依序處理:確認連接埠可用、確認應用類型、為目標套件新增豁免、重新啟動應用、查看連線與規則。只有在連線正常而應用服務仍失敗時,才繼續檢查節點、DNS 與帳戶服務。

下載Clash