天天看點

如何解除 Windows 8 中的 Modern Apps 網絡隔離?

在 Windows 8 中,我們全新引入了 WinRT 平台,帶給使用者包含動态磁貼和沉浸式使用者體驗的 Modern Apps。

如果您是企業使用者,有公司的代理伺服器環境,或者您是開發人員,相信您已經發現了在本地連接配接更換代理後,所有 Modern Apps 都不再能通路網絡。這是由于新的 WinRT 運作時的網絡隔離設計造成的。

為了實施新的安全性政策,讓 WinRT 平台上的應用更加安全,Modern Apps 在使用某項功能時,必須事先由開發者聲明。例如要使用網絡連接配接,就需要聲明,不僅要聲明需要網絡連接配接,還得聲明清楚需要哪一種類型的連接配接方式。由于實施了網絡隔離,所有的 Modern Apps 預設就不能使用IP環回位址進行程序間通信。當我們在 Internet 設定的連接配接設定裡,為 LAN 指定了代理伺服器之後,Modern Apps 也就不能上網了,此時隻有桌面版的應用程式才能通過代理伺服器上網。(WinRT 有一定的能力能夠檢測到本地網絡的預設代理伺服器進而使 Modern Apps 通路 Internet,但像手動指定了 LAN 代理後,它就不能自動檢測到了。)

有時候,當公司裡面的預設網絡代理伺服器不工作時,IT 管理者可能會要求使用者手動指定另外的 LAN 代理伺服器,此時, Modern Apps 都不能上網了,着實郁悶,其實,我們有兩種辦法解除網絡隔離的限制,讓 Modern Apps 在特殊時期也能上網:

法一:使用組政策為網絡隔離環境指定 Internet 代理

打開本地組政策編輯器,展開"計算機配置"-"管理模版"-"網絡"-"網絡隔離",我們可以看見如下幾個設定項:

我們可以編輯"應用的 Internet 代理伺服器",來指定一個 Internet 代理。注意,這裡指定的代理得與你在桌面IE選項的連接配接設定裡指定的LAN代理一緻,這樣 Modern Apps 才能具備通路網際網路的基礎。沒錯,這隻是個基礎,因為,僅指定這一項的話,你添加的代理與系統檢測到的代理是一個并集,由于自動檢測的優先,而在桌面指定了 LAN 代理後,自動檢測的代理與手動指定的 LAN 代理不一緻,結果還是不能上網。是以為了 Modern Apps 能上網,我們還需啟用"代理定義權威"這一項,讓 Modern Apps 隻使用這裡指定的代理。

法二:使用 Win8 内置的調試指令集為具體 App 添加網絡隔離排除

Windows 8 内置了一個指令行工具,是為了友善 Modern Apps 開發者診斷網絡問題的。我們可以利用它來把某些 Modern Apps 添加到網絡隔離排除清單:

這裡我們使用其中的 LoopbackExempt 參數即可實作我們的需求。對于這個參數,它的使用還有具體的二級參數需要指定。

程式幫助說的很明确了,是以這裡不再清單贅述。這裡,我想提醒大家的是,由于 AppContainer 或者程式包的 SID 較難尋找(需要借助系統資料庫),我個人建議大家使用 –n=[Name] 的方式來通過 AppContainer 或者程式包名來操作網絡隔離豁免。因為擷取名稱的方式很簡單,隻要你打開 %LocalAppData%\Packages 路徑,下面的各個檔案夾的名稱就是各個 Modern Apps 的名稱,可供使用, 友善複制粘貼。

從圖中可以看出,識别這些 App 究竟對應開始螢幕裡面哪個 Modern App 其實并不難,因為檔案夾的部分就是該程式的名稱。例如我們可以看見最後一個,"WinStore_cw5n1h2txyewy",它無疑就是"應用商店"這個應用的内部名稱。

這裡,我們假設現在預設的代理伺服器壞了,我在桌面環境設定了 LAN 代理,這時,我需要使用應用商店更新我的幾個應用程式,那麼,我就要為它添加網絡隔離豁免了:執行"CheckNetIsolation.exe LoopbackExempt -a -n=WinStore_cw5n1h2txyewy",便将應用商店添加到豁免清單了。

要驗證豁免清單,我們使用"CheckNetIsolation.exe LoopbackExempt -a -s"指令即可:

要删除某個豁免,将添加豁免的指令中的 -a 參數換為 -d 即可,要快速全部清除清單内容,執行"CheckNetIsolation.exe LoopbackExempt -c"。

比較以上兩種辦法,我個人還是建議大家使用第二種辦法。原因有兩個:

其一,組政策法中,無法為隔離網絡指定代理伺服器的代理端口,是以,使用非80口的應用可能還是不能正常工作。例如,應用商店在這樣設定時,隻能浏覽應用,無法更新軟體和下載下傳軟體。

其二,使用 CheckNetIsolation 可以友善地控制和查閱豁免情況,而且,沒有什麼端口的限制,程式功能完全正常。而且,對于 IT 專業人士而言,這個可以內建到代碼中去,并且代碼可複用,可自動化控制。

而在第二種方式裡面,建議大家使用 -n=[AppName] 的形式添加删除豁免比使用 -p=[AppSID] 不僅要好在上面提到過的便捷性,而且,像 Store 這樣的特殊 Modern App,它在系統資料庫的 HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings 下面根本就沒有對應的 SID 顯示出來。在上面通過名稱添加 Store 豁免,并且查閱豁免清單後,我們發現 Store 的 SID=S-1-15-2-2608634532-1453884237-1118350049-1925931850-670756941-1603938316-3764965493.

好了,由于篇幅有限,這裡對于網絡隔離的介紹很有限,如果您想進一步了解網絡隔離,請參考這篇文檔:

<a href="http://technet.microsoft.com/zh-cn/ie/hh770532">http://technet.microsoft.com/zh-cn/ie/hh770532</a>

Windows 8 還能通過 Windows 進階安全防火牆來控制這些 Modern Apps 的網絡通路規則,關于這一塊,可以進行延伸閱讀:

<a href="http://technet.microsoft.com/en-us/library/hh831418.aspx">http://technet.microsoft.com/en-us/library/hh831418.aspx</a>

本文轉自 hbycscc 51CTO部落格,原文連結:http://blog.51cto.com/mvperic/1073615

繼續閱讀