為了實施新的安全性策略,讓 WinRT 平台上的應用更加安全,Modern Apps 在使用某項功能時,必須事先由開發者聲明。例如要使用網絡連接,就需要聲明,不僅要聲明需要網絡連接,還得聲明清楚需要哪一種類型的連接方式。由於實施了網絡隔離,所有的 Modern Apps 默認就不能使用IP環回地址進行進程間通信。當我們在 Internet 設置的連接設置裡,為 LAN 指定了代理服務器之後,Modern APPS 也就不能上網了,此時只有桌面版的應用程序才能通過代理服務器上網。(WinRT 有一定的能力能夠檢測到本地網絡的默認代理服務器從而使 Modern APPS 訪問 Internet,但像手動指定了 LAN 代理後,它就不能自動檢測到了。)
法一:使用組策略為網絡隔離環境指定 Internet 代理
打開本地組策略編輯器,展開"計算機配置"-"管理模版"-"網絡"-"網絡隔離",我們可以看見如下幾個設置項:
法二:使用 Win8 內置的調試命令集為具體 App 添加網絡隔離排除
Windows 8 內置了一個命令行工具,是為了方便 Modern Apps 開發者診斷網絡問題的。我們可以利用它來把某些 Modern APPS 添加到網絡隔離排除列表:
這裡,我們假設現在默認的代理服務器壞了,我在桌面環境設置了 LAN 代理,這時,我需要使用應用商店更新我的幾個應用程序,那麼,我就要為它添加網絡隔離豁免了:執行"CheckNetIsolation.exe LoopbackExempt -a -n=WinStore_cw5n1h2txyewy",便將應用商店添加到豁免列表了。
要驗證豁免列表,我們使用"CheckNetIsolation.exe LoopbackExempt -a -s"命令即可:
比較以上兩種辦法,我個人還是建議大家使用第二種辦法。原因有兩個:
其一,組策略法中,無法為隔離網絡指定代理服務器的代理端口,所以,使用非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.