Windows Meからレジストリ構成ファイルに加わった「CLASSES.DAT」ファイルの役割を教えてください。
Windows Meでは,従来のレジストリファイルSYSTEM.DATとUSER.DATに加えて,新しくCLASSES.DATが追加されました。CLASSES.DATは主に二つの役割を担っています。
一つは「HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES」レジストリを保存する役割です。Windows Meのレジストリは,6個のルートキーから構成されており,3個のファイルに分けて保存されています。それぞれは,図1のような関係になっており,CLASSES.DATはHKEY_LOCAL_MACHINE\SOFTWARE\CLASSESの内容を保存しています。
HKEY_LOCAL_MACHINE\SOFTWARE\CLASSESは,主にアプリケーションとファイルの関連付け,OLEの関連付け,クラスIDなどが登録されており,Windowsの拡張子に関する設定情報がここで集中管理されています。ちなみに,オレンジの線で囲まれた各ルートキーは,HKEY_LOCAL_MACHINEおよびHKEY_USERSのサブキーをミラーリングしているだけで,どちらか一方を変更すれば自動的にもう一方も変更される仕組みになっています。例えば,HKEY_CLASSES_ROOTの内容を変更すると,自動的にHKEY_LOCAL_MACHINE\SOFTWARE\CLASSESの内容も更新されます。
なお,HKEY_DYN_DATAは,Windowsが起動されるたびにシステムが自動的に作成するステータス情報なので,とくに実体となるファイルは存在しません。
もう一つは「Windowsの起動時間を短縮する」役割です。Windows Meでは,Fast-Boot実現の一環として,Windows 9xより起動時間を高速化するための工夫が随所に盛り込まれています。CLASSES.DATにHKEY_LOCAL_MACHINE\SOFTWARE\CLASSESの情報が保存されている理由もそこにあります。
例えば,Windowsの拡張子に関する設定情報は,Windowsの動作に必要でも,Windowsの起動に絶対必要というわけではありません。このため,Windows Meでは,Windows 9xのようにログオン前にすべてのレジストリをロードするのではなく,先にSYSTEM.DATとUSER.DATをロードし,ログイン後にCLASSES.DATをロードするように変更されています。これにより,Windows起動時におけるレジストリの処理時間を短縮化し,Windowsの起動時間の短縮を図っています。
以上の2点がCLASSES.DATの大きな役割ですが,このほかにもHKEY_LOCAL_MACHINEからHKEY_LOCAL_MACHINE\SOFTWARE\CLASSESを分離することでSYSTEM.DATの肥大化を抑止したり,それによってシステムの不具合の発生を低減するなど,システムを安定させる間接的な役割も持っています。
(佐野直樹)
図1 レジストリファイルの構成