2015年1月9日金曜日

IE11で64bitマシンで起こるSilverlightの問題解決方法

以下のサイトに記事があったので、まとめてみました。

How to Debug Silverlight Applications on 64 Bit Windows when IE 11 is installed
http://www.codeproject.com/Tips/861917/How-to-Debug-Silverlight-Applications-on-Bit-Windo

【現象】
IE11で64bitマシンで以下のダイアログが表示される(例えばWindows7のx64?)

【原因】
TabProcGrowthというレジストリが原因

※TabProcGrowthとは?
IE8 以降では、各タブ ウィンドウをホストする UI フレーム ウィンドウとドキュメントを表示するタブ ウィンドウとが、別々のプロセスとして動作します。
この IE8 での新しいプロセス モデルは、Loosely-Coupled IE (LCIE) と呼んでいます。
LCIE 機能が有効の場合 (既定では有効)、各タブ、および window.open メソッドなどで開かれたウィンドウは別々のプロセスで動作し、タブごとに保護モードの設定が適用されます。
フレームとタブ部分のプロセスが分離することにより、特定の Web ページで問題が発生した場合でも、問題が発生したタブだけを切り離し、影響を最小限に抑えることができます。

しかしながら、 ActiveX などのアドオンによっては、LCIE 機能により複数の iexplore.exe プロセスが動作することで不都合が生じるようです (共有メモリーの使用や排他処理など)。
対策として、TabProcGrowth のレジストリで、LCIE 機能を無効にできます。
ただし、無効にすることでクラッシュ回復やハング回復機能の恩恵を受けられなくなりますので注意してください。

LCIE 機能の無効は、基本的にはデメリットしかないので、可能な限り LCIE 機能を無効にせずに利用することが望ましいです。
 
TabProcGrowth = 0: 同じプロセスで実行する
TabProcGrowth = 1: 異なるプロセスで実行する




【解決手段】
TabProcGrowthというレジストリを1にします

キー名:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth
値:1 

もし、キーがない場合は、作成してください。
IE再起動も忘れずに。 

1 件のコメント: