Hebikuzure's Tech Memo

2011年12月26日

Fiddler と Windows 8 Metro スタイル アプリケーション、ふたたび

Filed under: Internet Explorer — hebikuzure @ 5:57 PM

Revisiting Fiddler and Windows 8 Metro-style applications
http://blogs.msdn.com/b/fiddler/archive/2011/12/10/fiddler-windows-8-apps-enable-loopback-network-isolation-exemption.aspx


今回は Fiddler の製品ブログ (http://blogs.msdn.com/b/fiddler/) から、昨日掲載した記事の追加情報の記事を私訳しました。 昨日掲載の記事に書かれていた Fiddler を Windows 8 で利用する場合の制限事項と回避策について、Fiddler の更新や新しいツールの提供について説明されています。。

以下の文章は Fiddler Web Debugger の 12/10 の記事 Revisiting Fiddler and Windows 8 Metro-style applications を hebikuzure が私的に試訳したものです。翻訳については Microsoft Corporation および日本マイクロソフト株式会社とは無関係に hebikuzure が公開情報に基づき独自に行ったものであり、この文書の内容についての文責は公開者である hebikuzure にあります。翻訳の内容および技術的内容については正確を期すよう十分な注意を払っておりますが、誤りや不正確な部分が含まれている可能性がありますので、本文書を利用される際には原文も併せてご確認ください。


Fiddler と Windows 8 Metro スタイル アプリケーション、ふたたび

EricLaw [MSFT]

2011年12月10日 午前8時59分

9月の事でしたが、私は Fiddler を利用して Windows 8 の “Metro スタイル” アプリケーションをデバッグするための構成手順についてブログで記事にしました。

この元記事を書いて以降、私は .NETv4 Framework 上でネイティブに動作し、Windows 8 のユーザーが古いバージョンの .NET Framework をインストールしなくとも動作できる、新しいバージョンの Fiddler を利用できるようにしました。

その記事で指摘しているように、Metro スタイル アプリケーションは “AppContainer” として知られる独立したサンドボックス内で動作し、かつ既定では AppContainer はネットワーク トラフィックをローカル コンピューター (ループバック) に送信する事が禁じられています。これは、当然の事ながら、Fiddler を使ったデバッグで問題になります。と言うのも Fiddler はローカル コンピューター上で動作するプロキシだからです。記事では AppContainer がローカル コンピューターにトラフィックを送信できるようにするために CheckNetIsolation ツールが利用できる事を説明しました。しかし、CheckNetIsolation の利用方法は少し面倒です — AppContainer の名前またはセキュリティー ID を知っていなければならず、AppContainer 一つずつについて構成をしなければなりません。こうした困難さを解消するため、私は AppContainer がループバック トラフィックを利用できるように非常に簡単に構成できる GUI ツールを作成しました。このツールには Windows 8 が必要で、.NET Framework v4 上で動作します。ツールを起動すると、ユーティリティーはコンピューターの AppContainer をスキャンし、リスト ビューで表示します。それぞれの項目には左側にチェックボックスがあり、それぞれの AppContainer がループバック トラフィックを許可されているか示しています。このチェックボックスは個別に変更でき、また上部のボタンでまとめて変更する事もできます。Save Changes をクリックすると、行った変更が構成に反映されます。Refresh をクリックすると現在の構成設定が再読み込みされます。

EnableLoopback Utility をインストールすると、新たに “Win8 Loopback Exemptions” の項目が Fiddler の Tool メニューに追加されます; この項目をクリックすると、ユーティリティーが起動します。除外リストを変更するには、Administrator に権限昇格する必要があります。

-Eric

追記. 技術志向の方のため情報ですが、このツールは Windows 8 で導入された新たな Network Isolation API をコールする事で機能しています。これらの API への .NET 宣言は以下の通りです:

// Call this API to enumerate all of the AppContainers on the system
[DllImport("FirewallAPI.dll")]
internal static extern uint NetworkIsolationEnumAppContainers(out uint pdwCntPublicACs, out IntPtr ppACs); 
// Call this API to free the memory returned by the Enumeration API
[DllImport("FirewallAPI.dll")]
internal static extern void NetworkIsolationFreeAppContainers(IntPtr pACs); 
// Call this API to load the current list of Loopback-enabled AppContainers
[DllImport("FirewallAPI.dll")]
internal static extern uint NetworkIsolationGetAppContainerConfig(out uint pdwCntACs, out IntPtr appContainerSids); 
// Call this API to set the Loopback-exemption list
[DllImport("FirewallAPI.dll")]
internal static extern uint NetworkIsolationSetAppContainerConfig(uint pdwCntACs, SID_AND_ATTRIBUTES[] appContainerSids); 
// Use this API to convert a string SID into an actual SID
[DllImport("advapi32.dll", SetLastError=true)]
internal static extern bool ConvertStringSidToSid(string strSid, out IntPtr pSid); 
// Use this API to convert a string reference (e.g. "@{blah.pri?ms-resource://whatever}") into a plain string
[DllImport("shlwapi.dll", CharSet=CharSet.Unicode, ExactSpelling=true)]
internal static extern int SHLoadIndirectString(string pszSource, StringBuilder pszOutBuf, int cchOutBuf, IntPtr ppvReserved);
広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。