setodaNote

忘れる用のメモ書き

ZoneID を付与する方法など

ZoneID とは

ファイルの代替ストリーム(Alternate Data Stream, ADS)として記録される Zone.Identifier のひとつ。 外部から取得したファイルなどに付与され、ファイル起動時に警告を表示する/しないの判断などに利用されている。 Windows XP Service Pack 2 の IE から導入されたらしい。

実行形式のファイルに対して、外部から入手したことを示すZoneID が付与されている場合、 以下のような警告ダイアログが表示される。

f:id:soji256:20180717005852p:plain:w480
ZoneID に基づく警告ダイアログ

ZoneID を確認する方法

dir コマンドで /r を引数に渡すと有無を確認できる。

dir /r

そこで「ファイル名:Zone.Identifier:$DATA」などと表示されたら more で内容を確認できる。

more < ファイル名:Zone.Identifier

ZoneID を付与・編集する方法

以下のコマンドで編集可能。付与されていない場合は新規作成となる。

notepad ファイル名:Zone.Identifier

外部から取得したことを示す場合は以下の通り入力して保存する。

[ZoneTransfer]
ZoneId=3

ZoneID を削除する方法

いくつか方法がある。

[方法1]

エクスプローラから実行形式ファイルのプロパティを表示し「全般」タブの下部にある「ブロック解除」を押下する

f:id:soji256:20180717010032p:plain:w434
ファイルプロパティからZoneIDを削除

[方法2]

メモ帳などで内容を空にして保存する。この場合、ADS自体は削除されない。

notepad ファイルパス:Zone.Identifier

[方法3]

PowerShell の Remove-Item を用いる。(要 v3 以上)

Remove-Item 'ファイルパス' -Stream Zone.Identifier;

[方法4]

マイクロソフトから提供されている streams.exe を用いる(SysinternalsSuite に含まれている)。

streams.exe -d ファイルパス

ZoneID が意図せず消えるケース

圧縮ファイルに ZoneID が設定されている場合に Windows 標準の展開(ファイル右クリックから「展開」) であれば ZoneID は展開されたファイルに対しても付与された状態になる。 一方、 圧縮解凍ソフト(7-Zip など)を利用した場合には ZoneID が展開されたファイルに引き継がれない場合があるので注意が必要。 ZoneID を維持する圧縮解凍ソフトも存在している(Explzh など)。

参考

(MS公式の情報もそのうち追加する。)

更新履歴

  • 2018/09/10 記載を簡潔に整理。