如何啟用回送以及疑難排解網路隔離 (Windows 執行階段應用程式)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

這個主題說明如何啟用網路存取的回送,以及如何為 Windows 市集應用程式疑難排解 Windows 8 中的網路隔離問題。

您必須知道的事

技術

先決條件

  • 下列資訊適用於任何連線或網路感知 Windows 執行階段應用程式,這種應用程式需要連線網路。這會影響以 JavaScript 編寫的應用程式。也會影響使用 C#、VB.NET 和 C++ 之 .NET Framework 4.5 編寫的應用程式。

網路隔離的診斷工具

提供內建的 CheckNetIsolation.exe 診斷工具,協助開發人員測試、診斷和疑難排解需要網路功能的應用程式。CheckNetIsolation.exe 是一種命令列工具,可從命令列接受輸入參數。它具有兩種主要的選項:

  • LoopbackExempt
    檢視已安裝的應用程式清單,這些應用程式已豁免 IP 回送限制且允許存取迴路位址。這個選項也允許在測試時為特定應用程式新增對 IP 迴路位址的存取。

  • Debug
    判斷應用程式所使用且已啟用的功能,以及任何未使用但已啟用的功能。 任何未使用但已啟用的功能會使應用程式較不安全。這個選項也提供已丟棄 (有可能是無意的) 的網路流量資訊。

CheckNetIsolation.exe 可以顯示含使用狀況資訊的說明訊息。若要顯示說明,請使用下列範例命令。

CheckNetIsolation -?

某些 CheckNetIsolation.exe 選項需要提供應用程式名稱或是應用程式識別碼。在目標電腦上部署應用程式後,可以在 c:\Program Files\Applications 資料夾下找到應用程式名稱。這是用以啟動應用程式的名稱。這是使用 Microsoft Visual Studio 2013 時所顯示的套件系列名稱,並且代表應用程式容器。您可以在登錄中的下列機碼之下找到應用程式識別碼:

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer

啟用網路存取的回送

使用 IP 迴路位址的網路通訊不能用於 Windows 執行階段應用程式中處理序間通訊 (兩個不同應用程式之間),因為受限於網路隔離。在針對通訊目的的相同程序內的應用程式中,允許使用 IP 回送位址的網路通訊。

即使該功能無法供客戶使用,開發人員仍然可能使用回送來進行測試或偵錯之用。例如,應用程式可能會從 Windows 執行階段應用程式 Web 服務下載資料。 基於開發目的,開發人員想在本機上的 127.0.0.1 使用 Web 服務設定的單一電腦上測試應用程式。

注意  回送僅允許用於開發用途。不允許用於在 Visual Studio 以外安裝的 Windows 執行階段應用程式。不僅如此,Windows 執行階段應用程式只能使用 IP 回送做為用戶端網路要求的目標位址。所以,使用 DatagramSocketStreamSocketListener 接聽 IP 迴路位址的 Windows 執行階段應用程式,會防止接受任何傳入的封包。

 

若要啟用迴路位址的存取,開發人員必須設定網路隔離,使應用程式豁免回送限制。若要讓網路服務收到封包,防火牆規則也必須允許在 TCP 或 UDP 連接埠上的接聽器。

利用 Visual Studio 安裝和執行的應用程式會自動登錄,不受回送限制的約束。開發人員可以執行下列命令,以檢視豁免應用程式的清單:

CheckNetIsolation.exe LoopbackExempt -s

開發人員也可以使用 CheckNetIsolation.exe 工具,手動為應用程式新增回送豁免。

若要讓應用程式豁免回送限制,必須提供套件的應用程式識別碼。下面的範例命令讓應用程式豁免回送限制。

CheckNetIsolation.exe LoopbackExempt –a –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

也可以為特定應用程式移除回送限制的豁免。下面的範例命令為相同應用程式移除回送豁免。

CheckNetIsolation.exe LoopbackExempt –d –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

CheckNetIsolation.exe 工具也允許開發人員根據應用程式容器的名稱,在這些回送限制中豁免應用程式。 下面的範例命令依應用程式容器名稱,讓應用程式豁免回送限制:

CheckNetIsolation.exe LoopbackExempt –a –n=stocks_mw26f2swbd5nr

使用 .NET Framework 撰寫的應用程式也可以根據應用程式容器的名稱,從這些回送限制中移除回送限制的豁免。下面的範例命令為相同應用程式移除回送豁免。

CheckNetIsolation.exe LoopbackExempt –d –n=stocks_mw26f2swbd5nr

也可以為所有已安裝的應用程式移除回送限制的豁免。下面的範例命令為本機電腦上安裝的所有應用程式移除回送豁免。

CheckNetIsolation.exe LoopbackExempt –c

偵錯網路隔離問題

偵錯選項用以產生 應用程式所使用的網路 功能報告。

偵錯選項提供方法來識別應用程式是否使用應用程式資訊清單中所宣告的所有功能。使用偵錯選項時,會指示系統追蹤應用程式正在使用哪些宣告的功能,以及未使用哪些宣告的功能。

若要使用偵錯選項,先將應用程式部署到目標電腦,然後再決定應用程式識別碼與應用程式名稱。CMD 視窗必須以提高的權限開啟 (以系統管理員的身分執行)。下面的範例命令為特定應用程式識別碼設定偵錯選項。

CheckNetIsolation.exe Debug –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

下面的範例命令根據應用程式容器的名稱,設定應用程式的偵錯選項。

CheckNetIsolation.exe Debug –n=stocks_mw26f2swbd5nr

設定 [偵錯] 選項後,從提高權限的 CMD 視窗啟動應用程式。您應該為應用程式將執行的作業執行和測試應用程式。在測試完成且應用程式仍然在執行時,按 Ctrl-C。在 CMD 視窗中會顯示列出網路功能狀態的摘要報告,每個功能以一個項目呈現,以指出是否已宣告該功能以及是否已使用該功能。已宣告不需要的功能時,摘要報告將指出未使用該功能 (摘要報告會將這個稱為「並未使用」與「不安全」)。詳細的流量報告也會列出網路存取所使用的來源與目的地 IP 位址。

下列文字顯示啟用過多功能的應用程式輸出。

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    InternetClient                Not Used and Insecure
    InternetClientServer          Not Used and Insecure
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    InternetClient                Not Used and Insecure

----------------------------------------------------------------------

    InternetClientServer          Not Used and Insecure

----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

下列文字顯示啟用適當功能的應用程式輸出。

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

相關主題

新增網路支援

如何設定網路隔離功能

疑難排解和偵錯網路連線