Hebikuzure's Tech Memo

2013年1月26日

Windows 8 の IE10 で 32ビット版のアドオンが利用できない

Filed under: Internet Explorer — hebikuzure @ 8:00 午後


32-bit browser applications may not work as expected in Internet Explorer 10
http://support.microsoft.com/kb/2716529/en-us


Windows 8 の 64ビット版の既定の動作では、デスクトップの Internet Explorer はトップレベルのウィンドウ フレーム (ブラウザーのクロムの部分) は 64ビット プロセスの iexplore.exe となり、ページを表示する各タブのプロセスは 32ビットの iexplore.exe が利用されます。そのため 32ビット版のアドオンが問題なく利用できるはずです。ただし拡張保護モードを有効にすると ([インターネット オプション] – [詳細設定] – [拡張保護モードを有効にする]) 、タブのプロセスも 64ビットになり 32ビット版のアドオンは利用できなくなります。

ところが拡張保護モードを有効に設定していないのに、32ピット版のアドオンが利用できない場合があります。上記のサポート技術情報ではこの現象とその理由について解説しています。

この現象は以下のレジストリ値が構成される場合に発生します。

  • キー : HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
  • 名前 : TabProcGrowth
  • データ : 0

Internet Explroer 8 以降のバージョンでは Loosely-Coupled IE (LCIE) と呼ばれるプロセス モデルが採用されており、前記のようにフレームのプロセスと各タブのプロセスは分離されています。また各タブごとにもそれぞれ別のプロセスが割り当てられます。この動作については「Japan IE Support Team Blog – IE8 のプロセスモデルについて」に解説されています。このページにも書かれているように、TabProcGrowth レジストリ値はタブのプロセス分離の動作を制御するもので、0 に設定すると LCIE が無効になり、IE7 以前と同じようにフレームとページの表示が同じ一つのプロセスで行われます。

Windows 8 の 64ビット版でこの設定になっていると、フレーム プロセスである 64ビット プロセスの iexplore.exe がページの表示にも利用される動作になります。つまりページは 64ビット プロセスでレンダリングされるため、32ビット版のアドオンは利用できなくなります。

この問題を回避するには、TabProcGrowth レジストリ値を削除するか、0 以外のデータに変更します。この手順は技術情報のページに掲載されている Fix it でも可能ですし、手動でレジストリ エディタを利用しても可能です。

TabProcGrowth レジストリ値を 0 のままにしておかなければならない場合は、64ビット版のアドオンを利用する必要があります。

WordPress.com Blog.