.NET FrameworkのWebBrowserの互換性の問題


.NET Frameworkでちょっとしたhtmlファイルをレンダリングしようと思うとWebBrowserクラスを用いると思うのだけど、これに使われているIEのエンジンの正体は何だろう?


少なくともIE7、欲を言うならIE8であって欲しい。IE6のレンダリングエンジンはバグだらけなので、ようやくモダンブラウザの仲間入りした(?)IE8であることを期待したいのだが。


そんなわけで少し調査してみた。WebBrowserをFormに貼り付け、ダミーのhtmlを表示し、そのhtmlファイルのなかでJavaScriptUAを取得して表示するという方法で調べた。この調査方法で正確なことがわかるのかどうかはよくわからないが。


テスト用のバイナリ
http://yaneu.com/yaneurao/hatena/webbrowser_test20090621.zip



■ Vista SP1 + IE8


Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)


■ Windows 2008(x64) + IE7


Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; .NET CLR 3.5.30729; .NET CLR 3.0.30729)


■ XP SP3 + IE8


Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


■ XP SP2 + IE6


Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


■ XP SP2 + IE6→IE8にupgrade(IE7はインストールしていない)


Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729


結果、わかったことは、(いまのところ)IE8のレンダリングエンジンは決して使われないということ(今日のコメント欄に補足あり)と、IE6のレンダリングエンジンであり得るということだ。そして、IE7がインストールされていればIE7になるであろうということだ。また、IE7をインストールしていなくともIE8をインストールすればIE7レンダリングエンジンが用いられるということだ。


どうせなら、.NET FrameworkをインストールしたときにIE7レンダリングエンジンを強制的にインストールして欲しい気がするのだが、そうはなっていないようだ。


結論) 特定の環境でWebBrowserが正しくレンダリングしないなら、IE6しか入っていないことを疑うべき。