web-dev-qa-db-ja.com

Windowsの64ビットプロセスで32ビットプロセスが開始されるのはなぜですか?

Windows 7 64ビットで32ビットプログラムを実行すると、64ビットプロセスがその下にある32ビットプロセスで開始されることがよくあります。たとえば、C:\ Program Files(x86)\ Internet Explorerからiexplorer.exe(Internet Explorer)を起動すると、64ビットプロセスが開始され、その下に32ビットプロセスが表示されます。

a

これは、ProcessExplorerとタスクマネージャーで確認できます。

b

どうしてこれなの?何が起きてる?また、C:\ Program Files\Internet Explorerに移動し、そこからiexplorer.exeを起動すると、64ビットと32ビットの両方のプロセスが開始されます。このフォルダ内の実行可能ファイルは、64ビットバージョンのプログラムを起動することになっています。

4
Samir

Internet Explorer(Windows Vistaのバージョン7以降)、Chrome、Firefoxは、タブごとに個別のプロセスを使用します。 Internet Explorerはこれを「保護モード」と呼んでいます。

メインフレームのUIだけでなく、すべてのネットワークとディスクへのアクセスを処理するメインブラウザプロセスがあります。次に、各タブは個別の低整合性レベルプロセスで実行されます(これはProcess Explorerで確認できます)。

  • iexplore.exe(中程度の必須の整合性レベル)
    • iexplore.exe(必須の整合性レベルが低い)
    • iexplore.exe(必須の整合性レベルが低い)
    • iexplore.exe(必須の整合性レベルが低い)

Low整合性レベルでマークされたプロセスは 実行できることは非常に限られています。

そのため、iexplore、chrome、firefoxの複数のプロセスが表示されます。

1
Ian Boyd

64ビットアプリケーションが32ビットアプリケーション、モジュール、またはプロセスとインターフェイスする必要がある場合(または必要と思われる場合)、その相互作用を管理するために32ビットプロセスを生成します。

IEの場合、@ and31415のコメントで述べたように、アドオン(Flash、ActiveXなど)や、閲覧するコンテンツに基づいて必要になる可能性のある他のアプリケーションと対話する必要があります。

1