Windows XP, IE6環境にUtilu IE Collectionをインストールすると、元々入っていたIE6の挙動がおかしくなる問題。
まず前提として、
・IE Collectionはインストール時にレジストリを大量にいじる(梱包している各IEインストーラの挙動次第)。
・アンインストールしてもそれを完全に元に戻さない。
・IE自体が複数バージョン同時実行することを全くケアしていない。
これだけ見ても、デフォルトで入っているIEを動かし続けたい場合、その環境に対して「導入すべきではない」。
以下のように、仮想環境にIE Collectionを導入するのが良いだろう。
Reliable Cross-Browser Testing, Part 1: Internet Explorer | Smashing Coding
しかし、導入してしまった場合どうなるか。
[発生条件]
・OS: Windows XP (SP2, SP3で確認)
・IEバージョン: IE6(IE6の複数バージョンで確認)
・Utilu IE Collection 1.7.2.1をインストール
(インストール時、オプションでIE7かIE8をチェック)
[現象]
元々入っていたIE6で、JavaScriptのwindow.open呼び出し時に、Windowが2画面開く。1枚は表示が空かつSHDocViewが無い状態で正常に動かない。アイコンも正常なIE6と異なる。その他、JS多用画面で頻繁にフリーズ・ブラクラ状態になる。
手元の環境ではIE Collectionで7or8を入れた場合に100%再現した。IE Collectionをアンインストールしても改善しない。
対処方法はかなり対処療法的手法になる。IE Collectionをアンインストールした後、レジストリエディタで以下のキーを削除。
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6} (既定) (値の設定なし)
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\InProcServer32 (既定) C:\\Program Files\\Internet Explorer\\ieproxy.dll
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\InProcServer32 ThreadingModel Both
要は"C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6"キーごと消す。
キーの意味は各自で調べて欲しい(ごめんなさい、調べきれませんでした)。
これでIE6のwindow.open周りの挙動は本来の動きに戻る。他におかしいところがあるかもしれないが、一度入れてしまったら後の祭り。IEのIE6より新しいバージョンを入れるか、復元するか、OSの再インストールをするか…… 綺麗にする方法はそこらしかなさそうである。IEのアップデートに失敗して旧IEが動かなくなってしまったときと同じ感じである。
あ、でも綺麗なOSにIE Collection入れてレジストリパッチを作る方法はあるかな……
なお、レジストリの修正は当然自己責任で。バックアップを取ってからの実施をお勧めする(ERUNTとか、この部分だけエクスポートするとか)。