[WPF] WebBrowserコントロール

WebBrowserコントロールを使用すると、アプリケーション内でブラウザを使用することができます。
が、これはMicrosoftのコントロールなのでInternet Explorerです。
しかも、互換性の問題とやらで標準ではIE7になります。
最新のIEを使用するためにはレジストリに値を追加する必要があります。

さらに、タッチ機能も無効になっているので有効にする必要があります。
さらに、ローカルのファイルを読み込むとセキュリティ警告が出るので、ローカルのファイル読み込みを有効にします。

void SetIEBrowserLatest() {
	var filename = Assembly.GetEntryAssembly().ManifestModule.Name;

	// WebbrowserのIEバージョンを指定
	using( var key = Registry.CurrentUser.CreateSubKey( @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION" ) ) {
		key.SetValue( filename, 11001, RegistryValueKind.DWord );
	}

	// ローカルのファイル読み込みを有効にする
	using( var key = Registry.CurrentUser.CreateSubKey( @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BLOCK_LMZ_SCRIPT" ) ) {
		key.SetValue( filename, 0, RegistryValueKind.DWord );
	}

	// タッチ機能を有効にする
	using( var key = Registry.CurrentUser.CreateSubKey( @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NINPUT_LEGACYMODE" ) ) {
		key.SetValue( filename, 0, RegistryValueKind.DWord );
	}
}

タッチ機能を有効にしないと、ライブラリによってはJavascriptのイベントが走らずに動かないものがあります。
例えばこのライブラリ
image.py — Bokeh 0.12.14 documentation

参考:
scroll - C# WebBrowser PanningMode - Stack Overflow

また別の問題もあるようですが・・・
Windows 8のWebBrowserControlをタッチ対応にする - kkamegawa's weblog