Windows 11 Pro 21H2 (22000.282)で確認。
Microsoftは何と言っているか?
「従来のサイトには、Internet Explorer 11 (IE11) から Trident MSHTML エンジンを使用します」と言っている*1。IEモードはIE 11であると言える。
WindowsからIE 11をアンインストールするとIEモードはどうなるか?
- Windows 10の場合、「Windowsの機能の有効化または無効化」に「Internet Explorer 11」がいる。この設定でIEを無効化していると、EdgeのIEモードは利用できなくなる*2。IE 11をインストールしていないとIEモードは使えないわけで、IEモードはIE 11であると言える。
- Windows 11の場合、「Windowsの機能の有効化または無効化」に「Internet Explorer 11」がない。そのため、Windows 10と同様の方法でIEモードを無効化することはできない。IE 11をインストールしている・いないに関わらずIEモードは使えるわけで、IEモードはIE 11であるとは言えない。
IEモードのWindows上どのようなプロセスで動いているか?
Edgeのプロセスモデル*3は、Chromeのプロセスモデル*4と同様、各種のプロセスが組み合わさって動いている。
EdgeのIEモードでウェブサイトを開き、タスクマネージャーを開くと"Microsoft Edge"の下に"iexplorer.exe"がいる。
また、そのEdgeのプロセス上でブラウザータスクマネージャーを見ると、IEのウィンドウはいない。つまり、EdgeがMSHTML.dllを用いてレンダリングを行うプロセスを自身の管理下に置いているわけではないと言える。
上記から、Edgeのプロセスとは別にIEのプロセスが動いており、EdgeのプロセスとIEのプロセスとは何らかの形で連携している*5と思われる。IEモードはIE 11かどうか分からないが、少なくともEdgeの直接的な管理下にはない。
iexplorer.exeでIEだけを起動できるか?
EdgeでIEモードを使っているときに、タスクマネージャーの「コマンドライン」に表示されているオプション(-dualengineadapter
, -dualenginepipe
など)を指定して、iexplore.exe
を起動してみた。
PS C:\> & "C:\Program Files\Internet Explorer\iexplore.exe" -dualengineadapter="C:\Program Files (x86)\Microsoft\Edge\Application\95.0.1020.40\dual_engine_adapter_x64.dll" -dualenginepipe=6744 APPID:MSEdge
の場合、IEでなくEdgeが起動し、DNS_PROBE_FINISHED_NXDOMAINエラーが表示された。
PS C:\> & 'C:\Program Files (x86)\Internet Explorer\iexplore.exe' SCODEF:18192 CREDAT:75010 APPID:MSEdge /prefetch:2
の場合、IEのプロセスは起動しない。$?
はTrue
、$LASTEXITCODE
は空になる。cmd.exe
から起動した場合の%ERRORLEVEL%
は0。
Windows 11のEdgeのIEモードでもF12開発者ツールを開けるか?
IEモードでF12を押すとMicrosoft Edge開発者ツールのペインが開くが、Microsoft Edge開発者ツールの各タブは使えない(非活性になっている)。Microsoft Edge開発者ツールの中央に「Developer Tools are not available in Internet Explorer mode. To debug the page, open the page in IEChooser.」というメッセージが表示される。
C:\Windows\System32\F12\IEChooser.exe
を起動し、「デバッグするターゲットの選択」からIEモードで開いているデバッグ対象のページを選択すると、F12開発者ツールが起動する。IE 11ではIEChooser.exe
は不要だったわけで、その点でIEモードはIE 11とは異なる。
IE 11のないWindows 11でも、IEコンポーネントブラウザは使える?
使える。Donut RAPT 135 (Unicode)で確認。
IEコンポーネントブラウザのタスクマネージャーで表示すると、IEコンポーネントブラウザ本体のプロセスだけが表示される。EdgeのIEモードのように、ブラウザ本体の下にサブプロセスとしてiexplore.exeが存在する構成にはならない。 IEモードはIEコンポーネントブラウザとは異なる構成で動作していると言える。
LCIEはEdgeのIEモードでも動作しているの?
IEモードのタブを10個開いてみたところ、タスクマネージャー上でC:\Program Files\Internet Explorer\iexplore.exe
(UI フレーム ウィンドウのプロセスと思われる)は1つ、C:\Program Files (x86)\Internet Explorer\iexplore.exe
(タブプロセスと思われる)は4つになった。
IEモードのタブを1個開いたときは前者・後者とも1つだけだった。LCIEがタブプロセスを増やす場合、15タブでタブプロセス3つとかのはず*6で、10タブで4プロセスという組み合わせにはならないのでは?
iexplorer.exeのプロパティ(特に詳細情報)は?
C:\Program Files\Internet Explorer\iexplore.exe
(UIフレームウィンドウ用と思われる)のプロパティは以下。「ファイルの説明」はInternet Explorer、ファイルバージョン・製品バージョンは11.0.22000.120となっている。
C:\Program Files (x86)\Internet Explorer\iexplore.exe
(タブプロセスと思われる)のプロパティは以下。ファイルサイズ以外は、C:\Program Files\
以下にあるものと同じ。
いずれもInternet Explorerのバージョン11であるというファイルになっている。
結論
EdgeのIEモードは「IE11のデスクトップアプリケーション」*7がいるわけでもなく、Edgeのプロセスモデル上IEコンポーネントブラウザになっている(mshtml.dllを直接組み込んでいる)わけでもない……という非常に説明がしづらい状態と言える。
*1:https://docs.microsoft.com/ja-jp/deployedge/edge-ie-mode
*2:https://japan.zdnet.com/article/35171642/p/2/
*3:https://blogs.windows.com/msedgedev/2020/09/30/microsoft-edge-multi-process-architecture/
*4:https://www.google.co.jp/intl/ja/googlebooks/chrome/
*5:ファイル名から見て、iexplorer.exeのコマンドライン引数に指定されているdual_engine_adapter_x64.dllがそれを担っているのだろう
*6:マシンの搭載メモリなどによって異なる。 https://docs.microsoft.com/en-us/archive/blogs/askie/opening-a-new-tab-may-launch-a-new-process-with-internet-explorer-8-0
*7:https://www.itmedia.co.jp/pcuser/articles/2106/07/news067.html