多くのファイルシステムでは、メタ情報としてファイルの属性(Attribute、アトリビュート)をサポートしている。ファイル属性とは、たとえば、「読み出し専用」や「隠しファイル」などのファイルやディレクトリのあり方を示すものだ。今回は、このファイル属性を考えていく。
あらためてWindowsのファイル属性を整理する
以下の表は、Windowsのファイル属性の一覧である。左端の列挙値は、Windowsのファイルシステムで利用する属性であり、たとえば、ReFS専用の属性などもこれに含まれている。
原則的にここにあるファイル属性が現在のWindowsが扱うファイル属性である。なお、これは、Windows SDKにある「WinNT.h」で定義されている。
●ファイル属性定数 (WinNT.h)
https://learn.microsoft.com/ja-jp/windows/win32/fileio/file-attribute-constants
その横は、System.IO.FileAttributes 列挙型で定義されているもの。こちらは、.NETや.NET Framework(以下、NET版列挙型)で扱える。
●FileAttributes 列挙型
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.fileattributes?view=netframework-4.8.1
ただし、.NET版列挙型は、WinNT.hで定義されているすべてのファイル属性には対応しているわけではない。とはいえ、対応していないのはOneDrive関係で追加された属性などで、それらはエクスプローラーからユーザーが手動設定したりする。
ファイル属性で注意が必要なのは、「圧縮」と「暗号化」だ。これらは属性として定義されているものの、属性を変更すれば、勝手に圧縮や暗号化がなされるのではなく、これらの処理と合わせて属性を変更する。
エクスプローラーからユーザーがプロパティを操作して設定する場合には、圧縮、暗号化(あるいは解凍、解読)処理がされるになっている。しかし、単なるファイル属性変更だけでは、処理が自動的に起動するわけではないので注意が必要だ。
ファイル属性には、整数値が対応しており、32bitで2進数表現したときにお互いにぶつからないように配置してある。このため、1つのファイル/ディレクトリに対して複数のファイル属性を設定できる。論理的には、1つのファイルやディレクトリにすべての属性を指定可能である。しかし、属性によっては、ファイルやディレクトリ、ファイルシステムなどの対象が限定されているものがあるため、すべてを1つのファイルに指定することはできない。

この連載の記事
-
第489回
PC
大きく分けて3種類あるWindowsのライセンス形態 -
第488回
PC
Windowsのサウンド設定をコマンドラインで調べる -
第486回
PC
Excelがあればなんでもできる -
第485回
PC
Windows Subsystem for Linux(WSL)のソースコードが公開された -
第484回
PC
WindowsのコマンドラインでGrapheme Clusterを正しく扱うには -
第483回
PC
Microsoftが作るコンソールエディタがこの時代に復活 -
第482回
PC
WSL(Windows Subsystem for Linux)向けにFedoraディストリビューション登場 -
第481回
PC
Windows 11にそろそろ聞こえる25H2の声 -
第480回
PC
PowerShellが使う色を変更する -
第479回
PC
Copilot+ PCで利用できる「Windows Copilot Runtime」を試す ローカル推論用モデル「Phi Silica」とは? - この連載の一覧へ