Windows 64ビット版のSysnativeフォルダーとは?System32・SysWOW64との違いを解説
Windows 64ビット版のSysnativeフォルダーとは?
Windows 7の64ビット版の登場以降、Windowsディレクトリ内のフォルダー構成には小さな変更が加えられました。Windows 10、Windows 8、Windows 7の64ビット版には、SysnativeとSysWOW64という2つの新しいフォルダーが含まれています。これらは64ビット版Windowsにのみ存在するものであり、64ビットマシン上で32ビット版Windowsを実行している場合や、32ビットマシンで32ビット版Windowsを使っている場合には表示されません。
また、Windowsディレクトリの外にはProgram Files (x86)というフォルダーもあります。従来、プログラムの実行ファイルは「Program Files」フォルダーに格納されてきましたが、64ビットシステムでは、64ビットプログラムは「Program Files」に、32ビットプログラムは「Program Files (x86)」にそれぞれ保存されます。これは、64ビットマシン上で32ビットプログラムを動作させるために、Windowsがある種のエミュレーション機構を使用しているためです。したがって、目的のファイルに正しくアクセスするためには、64ビット版Windowsのシステムフォルダーの構造を理解しておくことが重要になります。
System32フォルダーの役割
32ビット環境では32ビット用DLLがSystem32フォルダーに格納されていましたが、64ビット版Windowsでは、64ビット用のDLLがSystem32フォルダーに格納されます。これはプログラミングを容易にし、後方互換性を保つためです。つまり、64ビットプログラムのコードがSystem32を参照していれば、呼び出し時に自動的に64ビットDLLが取得されます。これにより、開発者は64ビット版Windows向けにコードを書き換える手間が省けます。
要するに、Windowsは32ビットDLLをSystem32フォルダーから別のフォルダーへ移動することで、64ビットへアップグレードした後でも、APIを使用する既存のプログラムが適切なDLLを取得できるようにしたのです。ただし問題は、32ビットアプリケーションがSystem32フォルダーへ直接アクセスしようとした場合に発生します。この場合、そのプログラムは64ビットDLLを扱うよう設計されていないため、クラッシュしてしまう可能性があります。
SysWOW64フォルダーとは
64ビット版Windows 10、Windows 8、Windows 7では、すべての32ビットDLLが新しいSysWOW64フォルダーへ移動されました。そのため、32ビットプログラムが32ビットDLLを呼び出す際には、SysWOW64フォルダーへアクセスすることになります。
ここで「開発者は自社のプログラムを修正して、DLL関数の参照先をSysWOW64フォルダーへ変更しなければならないのでは?」と感じるかもしれません。しかし、Microsoftはすでにこの問題に対応済みです。32ビットプログラムがC:\Windows\System32を呼び出すと、エミュレーター(WOW64)がパスを自動的にC:\Windows\SysWOW64へリダイレクトします。つまり、64ビット版Windowsで32ビットプログラムを動かすためにエミュレーターが使用されており、これによって後方互換性が確保され、DLLファイル呼び出し時のエラーも回避されています。
Sysnativeフォルダーの正体
一方で、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ビットプログラムからのみ表示・アクセス可能であるためです。
まとめ
- System32:64ビットDLLファイルが格納されている
- SysWOW64:32ビットDLLファイルが格納されており、32ビットプログラムは自動的にこのフォルダーへリダイレクトされる
- Sysnative:32ビットプログラムが64ビットDLLを呼び出せるようにするリダイレクト用フォルダー
より詳しい技術情報については、MSDNの公式ドキュメントも併せて参照してください。
-
Windows 10の「System Volume Information」フォルダーとは?容量肥大の原因と安全な対処法
Windows 10に存在する「System Volume Information(システムボリューム情報)」フォルダーについてご存じでしょうか?PCのドライブ容量を大幅に消費し、サイズがどんどん膨らんでいくことに悩んでいる方も多いはずです。この記事では、このフォルダーの正体や役割、そして削除できるのかどうかについて詳しく解説します。 System Volume Informationフォルダーとは System Volume Informationフォルダーは、Windows OSによって保護された特別なシステムフォルダーです。表示するには、Windowsの設定で「隠しファイル」と「保護さ
-
Windowsのフォルダーリダイレクトとユーザープロファイルとは?仕組みと特徴を解説
Windowsオペレーティングシステムにおける「フォルダーリダイレクト」と「ユーザープロファイル」は、ユーザーがどのコンピューターにログオンしていても、一貫した操作環境を提供するための重要な機能です。これらの機能は、Windows 11/10/8/7に標準で搭載されています。 Windows OSにおけるフォルダーリダイレクトとユーザープロファイル ここでは、この2つの技術についてそれぞれ概要を説明します。 フォルダーリダイレクト(Folder Redirection) フォルダーリダイレクトは、「ドキュメント」「デスクトップ」「ダウンロード」などのユーザーフォルダーの保存先を、ローカルドラ