Windows
 Computer >> コンピューター >  >> システム >> Windows

Windows 64ビット版の「Sysnative」フォルダーとは?SysWOW64との違いもわかりやすく解説

Windows 7の64ビット版が登場した際、Windowsディレクトリ内のフォルダー構成に小さな変更が加えられました。Windows 10、Windows 8、Windows 7の64ビット版には、SysnativeSysWOW64という2つの新しいフォルダーが含まれています。これらは64ビット版Windowsにのみ存在するフォルダーです。64ビットマシン上で32ビット版Windowsを実行している場合や、32ビットマシンで32ビット版Windowsを使用している場合には、これらのフォルダーは表示されません。

また、Windowsディレクトリの外にはProgram Files (x86)というフォルダーもあります。通常、プログラムの実行ファイルは「Program Files」フォルダーに格納されますが、64ビットシステムでは、64ビットプログラムは「Program Files」フォルダーに、32ビットプログラムは「Program Files (x86)」フォルダーに保存されます。Windowsは、64ビットマシン上で32ビットプログラムを実行するために、一種のエミュレーション機構を使用しています。そのため、目的のファイルに正しくアクセスするためには、64ビット版Windowsのシステムフォルダー構成を理解しておくことが重要です。

32ビット環境では32ビット用DLLがSystem32フォルダーに格納されていましたが、64ビット版Windowsでは、64ビット用のDLLがSystem32フォルダーに格納されています。これは、プログラミングを容易にし、下位互換性を確保するためです。つまり、64ビットプログラムがコード内でSystem32を参照すると、呼び出し時に自動的に64ビットDLLが取得されます。これにより、開発者はWindows 64ビット対応のためにプログラムのコードを書き換える必要がなくなります。

要するに、Windowsは32ビットDLLをすべてSystem32フォルダーから別のフォルダーへ移動させました。これにより、64ビットへアップグレードした後でも、APIを使用する際に従来のプログラムを再コーディングしなくても、適切なDLLを取得できるようになっています。問題が発生するのは、32ビットアプリケーションがSystem32フォルダーへアクセスしようとした場合です。この場合、プログラムは64ビットDLLを扱うようには作られていないため、クラッシュしてしまいます。

関連記事:Pantherフォルダーとは?

SysWOW64フォルダーの役割

すべての32ビットDLLは、64ビット版Windows 10、Windows 8、Windows 7における新しいSysWOW64フォルダーへ移動されました。したがって、32ビットプログラムが32ビットDLLを呼び出す際には、SysWOW64フォルダーへアクセスすることになります。

開発者が自分のプログラムやアプリケーションを修正して、DLL関数の参照先をSysWOW64フォルダーへ変更しなければならないと心配するかもしれませんが、Microsoftはすでにこの問題に対応済みです。32ビットプログラムがC:\Windows\System32を呼び出すと、エミュレーターが自動的にパスをC:\Windows\SysWOW64へリダイレクトします。つまり、64ビット版Windowsで32ビットプログラムを実行する際にはエミュレーターが使用され、適切な下位互換性が保たれ、DLLファイル呼び出し時のエラーが回避される仕組みになっています。

関連記事:FOUND.000フォルダーとは?

Sysnativeフォルダーの役割

Windows 64ビット版の「Sysnative」フォルダーとは?SysWOW64との違いもわかりやすく解説

32ビットのプログラムやアプリケーションが、64ビットDLLを必要とするケースもあります。そのような場合は、リダイレクト用フォルダーであるSysnativeを使用します。Sysnativeは、System32フォルダーを指す仮想フォルダー(エイリアス)と考えることができます。実際には、システム上に物理的に存在するフォルダーではありません。

したがって、32ビットプログラムが64ビットDLLへアクセスする必要がある場合は、C:\Windows\System32を指定してはいけません。32ビットプログラム用のエミュレーターによって、32ビットDLLが格納されたSysWOW64フォルダーへ誘導されてしまうからです。代わりに、C:\Windows\SysNativeをDLLへのパスとして使用してください。パスにSysnativeを指定すると、SysWOW64フォルダーではなくSystem32フォルダーへ正しくリダイレクトされます。

エクスプローラーを開いても、C:\Windows内にSysnativeフォルダーは見つかりません。フォルダーオプションで「隠しファイルやシステムファイルを表示する」よう設定しても同様です。これは、64ビット版Windowsではエクスプローラー自体が64ビットプログラムとして動作しており、Sysnativeフォルダーは32ビットプログラムからのみ表示・アクセス可能だからです。

まとめ:

  1. System32フォルダーには、64ビットDLLファイルが格納されている。
  2. SysWOW64フォルダーには、32ビットDLLファイルが格納されており、32ビットプログラムは自動的にこのフォルダーへリダイレクトされる。
  3. Sysnativeは、32ビットプログラムが64ビットDLLを呼び出せるようにするリダイレクトフォルダーである。

詳細については、MSDNの公式ドキュメントも参考にしてください。

System32フォルダーとSysWOW64フォルダーの違いについてさらに詳しく知りたい方は、こちらの記事もぜひご覧ください。

  1. Windows 10の「System Volume Information」フォルダーとは?容量肥大の原因と安全な対処法

    Windows 10に存在する「System Volume Information(システムボリューム情報)」フォルダーについてご存じでしょうか?PCのドライブ容量を大幅に消費し、サイズがどんどん膨らんでいくことに悩んでいる方も多いはずです。この記事では、このフォルダーの正体や役割、そして削除できるのかどうかについて詳しく解説します。 System Volume Informationフォルダーとは System Volume Informationフォルダーは、Windows OSによって保護された特別なシステムフォルダーです。表示するには、Windowsの設定で「隠しファイル」と「保護さ

  2. Windowsのフォルダーリダイレクトとユーザープロファイルとは?仕組みと特徴を解説

    Windowsオペレーティングシステムにおける「フォルダーリダイレクト」と「ユーザープロファイル」は、ユーザーがどのコンピューターにログオンしていても、一貫した操作環境を提供するための重要な機能です。これらの機能は、Windows 11/10/8/7に標準で搭載されています。 Windows OSにおけるフォルダーリダイレクトとユーザープロファイル ここでは、この2つの技術についてそれぞれ概要を説明します。 フォルダーリダイレクト(Folder Redirection) フォルダーリダイレクトは、「ドキュメント」「デスクトップ」「ダウンロード」などのユーザーフォルダーの保存先を、ローカルドラ