代替データ ストリーム
読み:だいたい-データ-ストリーム
外語:ADS: Alternate data streams

 NTFSに存在する機能で、ファイルフォルダーに対し、付加的な情報(フォーク)を紐付ける機構。略して「ADS」という。
目次

概要
 NTFSでは、目に見えるファイル(メインストリーム)に対し、目には見えないファイル(代替データ ストリーム)をファイルやフォルダーに持たせることができる。
 この代替データ ストリームはファイルに関する様々な情報を保存するのに用いられており、またインターネットからダウンロードされたファイルなどはその情報をADSで保存することで、リスクのあるファイルからユーザーを保護するのに用いられている。

特徴

インターネットからダウンローしたファイル
 Windows XP SP2以降から、インターネット上からダウンロードしたファイルに対して代替データ ストリーム Zone.Identifier が自動付加されるようになった。
 このファイルにアクセスしようとすると逐一セキュリティ確認が出て大変面倒である。ファイルのプロパティを開くと全般タブの一番下に表示され、削除したい場合、Windows 7なら「ブロックの解除(K)」ボタンを押せば削除され、Windows 10なら「ブロックの解除」、Windows 11なら「許可する(K)」にチェックを付けてOKまたは適用をすれば同様にZone.Identifierは削除される。
 なお、この方法はファイル1個ずつでしかできない(複数まとめては不可)。この方法でZone.Identifierを削除しても更新のタイムスタンプは変化しない。

確認方法
 Windowsのエクスプローラーでは、XPから11まで一貫して一覧画面では特に存在を表示する機能はない。
 Windows Vista/7以降では、コマンド プロンプトのDIRコマンドに、代替データ ストリームを表示するオプション /R が追加された。
 例えば、インターネットからダウンロードしたファイルを確認すると、次のようになる。

xxxx/xx/xx xx:xx 123,456 hoge.pdf 26 hoge.pdf:Zone.Identifier:$DATA

 Zone.Identifierという代替データ ストリームがあることが分かる。

中身の仕様
 この内容は.iniファイルの形式であり、次のような内容である。
 [ZoneTransfer]
 ZoneId=3
 HostUrl=about:internet
 Windows 7の頃はZoneIdのみで26バイト、Windows 11で確認したところHostUrlが追加されており50バイトとなっている。
 なお、代替データ ストリームを編集してもファイルそのものの大きさや内容は変化しないが、ファイルそのものの更新タイムスタンプは変化する。

中身の表示
 typeコマンドなどでは表示できないが、コマンド プロンプトなら次のようにして表示できる。
 more < ファイル名:Zone.Identifier
 コマンドプロンプトの場合、notepadを使えば内容を確認または編集することができる(PowerShellでは不可)。
 notepad hoge.pdf:Zone.Identifier
 ファイル名に空白が含まれる場合はファイル名だけを""で囲むこと。

削除(ブロックの解除)
 上述のように、1ファイルずつであればエクスプローラーのプロパティから許可(ブロックの解除)できる。
 自動的にこの削除を実行する場合、Windows PowerShellを開き、以下のようにする。
 Unblock-File ファイル名
 ファイル名にはワイルドカードも使用可能。
 Unblock-File *.*
 いずれの方法も、更新のタイムスタンプは維持され変化しないが、アクセス日時は当然ながら変化する。

再検索