異なるプロセスがSystem32フォルダーの異なるインスタンスを参照するのはなぜですか?


10

Windows 8 Enterprise x64を実行しています。Administratorsグループのアカウントを使用してログオンしました。Windowsエクスプローラーまたはコマンドプロンプトを開くと、次のファイルが表示されますcdd.dll

ウィンドウズ・エクスプローラ


C:\Windows\system32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\system32

07/25/2012  09:49 PM           199,680 cdd.dll

しかし、Chromeブラウザー、Visual Studio、またはその他のいくつかのアプリケーション(すべて32ビットアプリ)から[ファイルを開く]ダイアログを開き、C:\Windows\system32そこに移動すると、そのようなファイルはありません(フィルターは[すべてのファイルを表示]に設定されています)。そして、[ファイルを開く]ダイアログでShift +右クリックを使用して[ここにコマンドウィンドウを開く]コンテキストメニュー項目を呼び出し、次のように入力dirすると、そのようなファイルがないことが確認されます。

ファイルダイアログを開く


C:\Windows\System32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\System32

File Not Found

この効果はに固有のものcdd.dllではなく、他の多くのファイルも異なります。これはファイルシステムの仮想化の影響であると言われていますが、 ほとんど知りません。

これが実際にどのように機能するかを説明するか、参照を教えていただけませんか?System32フォルダーのいくつかの異なるインスタンスが実際にありますか?ディスク上の物理的な場所はどこですか?System32デフォルトで示されているものとは異なるフォルダー内の32ビットプロセスファイルから32ビットプロセスにアクセスすることは可能ですか?


x64アプリに表示されますか?Windowsが64ビットドライバー(cdd.dllはディスプレイドライバー)を32ビットアプリから「隠す」という予感があります。
Nathan C

はい、ファイルシステムを参照できるすべての64ビットアプリ([ファイルを開く]ダイアログがあるなど)は、Windowsエクスプローラーと同じファイルを表示します。
Vladimir Reshetnikov 2013

@VladimirReshetnikovまだ理解できないことがありましたか。質問を編集しましたが、詳細は含まれていませんでした。また、回答も受け入れていません。他に何か明確にする必要がありますか?
Scott Chamberlain

@ScottChamberlainタグを編集したところです。あなたの答えはとても良いです。ありがとう!
Vladimir Reshetnikov 2013

回答:


11

問題はフォルダーリダイレクトです。32ビットプログラムが%windir%\System32フォルダーにアクセスしようとすると、フォルダーに%windir%\SysWOW64ディレクトリにリダイレクトされますが、これは32/64ビットアプリケーションの互換性のためです。

System32内のすべてのファイルは64ビットですが、プログラムが誤って記述されている場合、DLLを探すときにSystem32がプログラムにハードコードされている可能性があります。誤って作成されたプログラムによるランダムなプログラムクラッシュを防ぐために、マイクロソフトはそのリダイレクトを行います。

SysWOW64フォルダーではなくSystem32フォルダーにアクセスする必要がある場合は、「非表示」フォルダーに移動します。%windir%\sysnativeこれにより、「実際の」System32フォルダーに移動し、通常のようにフォルダーを参照できます。


%windir%は環境変数です。Windowsと同じように入力でき、99%のC:\Windows
Scott Chamberlain

4

WOW64(Windows on Windows 64bit)は、さまざまなテクノロジー/テクニックを使用して32ビットアプリケーションをサポートします。その中には、フォルダーおよびレジストリリダイレクターがあります。

Windowsデベロッパーセンター:32ビットアプリケーションを実行するデスクトップ


より具体的には、この魔法を起こさせるアプリケーション互換性プロファイルに関する情報。
David Hoelzer 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.