2005/09/10

ファイルに関する概要情報の取得

ファイルに関する概要情報の取得

Windows98などのFATファイルシステムを使用しているOSではOfficeドキュメント等の特殊なファイルにしか ”概要”情報を付加することはできませんでした。しかし、NTFSを使用しているWindows2000などのOS では全てのファイルに対してこの情報を付加することができます。これはNTFSが複数のストリームを ひとつのファイルとして管理する機構を備えているためです。まずこのあたりについて簡単に触れておきましょう。

NTFS上のファイルは通常メインストリームその他のストリームから構成されています。このメインストリーム というのはFATなどのNTFS以外のファイルシステムからでも認識できるストリームで、それ以外は NTFSのみから認識でき、複数のものをそれぞれ独立に登録することができます。 この機構を利用することでNTFSはそれぞれのファイルにに概要情報を記録しているのです。実際Windows2000などでは SummaryInformationという名前のストリームにこの情報が保存されています。

では、このストリームどうやってアクセスするのでしょうか?実は、Windows2000などでは非常に簡単にこのストリーム にアクセスする方法を提供しています。CreateFile()というAPI関数ではファイル名に次のような書式を用いることで通常のファイル と同様にアクセスすることができます。

[ファイル名]:[ストリーム名] (例 test.txtというファイルのInformationというストリームの場合) test.txt:Information

そうすると、概要情報もこのようにしてSummaryInformationストリームにアクセスすることで読み書きできるということに なります。しかし、この情報に直接アクセスするのは安全とはいえません。従って、その情報を読み書きするために提供されている方法について検討してみます。