.NET FrameworkのWebBrowserの互換性の問題
.NET Frameworkでちょっとしたhtmlファイルをレンダリングしようと思うとWebBrowserクラスを用いると思うのだけど、これに使われているIEのエンジンの正体は何だろう?
少なくともIE7、欲を言うならIE8であって欲しい。IE6のレンダリングエンジンはバグだらけなので、ようやくモダンブラウザの仲間入りした(?)IE8であることを期待したいのだが。
そんなわけで少し調査してみた。WebBrowserをFormに貼り付け、ダミーのhtmlを表示し、そのhtmlファイルのなかでJavaScriptでUAを取得して表示するという方法で調べた。この調査方法で正確なことがわかるのかどうかはよくわからないが。
テスト用のバイナリ
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)
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しか入っていないことを疑うべき。