Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

streamsコマンドでNTFSの代替データ・ストリーム情報を表示/削除する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2010/01/14
対象OS
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
NTFSでは、1つのファイルの中に複数のデータ・ストリームを保存できる。
Internet Explorerでは代替データ・ストリーム中にZoneId情報を保存し、インターネット・ゾーンからダウンロードしたファイルであることが分かるようにしている。
Sysinternalsのstreamsコマンドを使うと、代替データ・ストリーム情報の列挙や一括削除ができる。

解説

NTFSの代替データ・ストリーム(ADS)とは?

 NTFSファイル・システムでは、1つのファイルに対して複数のデータ・ストリームを割り当てることができる。ストリームとは、バイト単位で可変長となっているデータ格納領域のことであり、一般的なファイルは1つのデータ・ストリーム(メイン・データ・ストリームという)しか持っていない。だが場合によっては1つのファイルに対して関連する補助的なデータを持たせたいことがあり、このために利用されるのが代替データ・ストリーム(ADS:Alternate Data Stream)である。関連するデータを複数のファイルに分散して保存すると、それぞれのファイルを常にまとめてコピー/移動したり、作成/削除したりしなければならない。だが1つのファイルに複数のストリームとして格納しておけば、ファイルを1つ処理(コピーや移動)するだけで、関連するデータも自動的に連動して処理されるので便利である。

  このマルチ・データ・ストリームの利用例としては、初期のWindows Server OSに実装されていたMacintosh向けのファイル・サーバ機能がある(Windows Server 2008以降ではサポートされていない)。Macintoshのファイル・システムでは、1つのファイルに「データ フォーク」と「リソース フォーク」という複数のデータを格納しているが、それを2つのストリームに分けて保存していた。

Internet ExplorerのZoneIdと代替データ・ストリーム

 NTFSの代替データ・ストリームを利用する例として、Internet Explorer(以下IE)のZoneId(ゾーンID)機能がある。IEでは、「インターネット ゾーン」」に分類されるサイトからダウンロードしたファイルに対してZoneIdというセキュリティ情報を付加することにより、以後、このファイルに対して特別な扱いを要するファイルであるという印が付けられる(Firefoxなど、ほかのWebブラウザでもサポートされている)。

 ZoneIdが付けられたファイルのプロパティ画面を以下に示す。

ZoneIdが付いたファイルのプロパティの例
これはWindows 7のIEでインターネット・ゾーンのサイトからダウンロードしたファイルのプロパティの例。ほかのゾーンからダウンロードしたファイルにはZoneIdは付けられず、このセキュリティ情報は表示されない。
ZoneIdが付いたファイルのプロパティには、このセキュリティ情報が表示される。
これをクリックすると、ZoneId情報が削除される。ただし、UACによって保護されているフォルダ上にファイルが置かれている場合は(UACで許可しないと変更できないような場合は)、このボタンをクリックしても、設定はなぜか反映されない(削除できないということ)。次回プロパティ・ダイアログを開くと、またこのボタンが有効になっている。必要ならほかのフォルダへコピーしてから解除するか、本TIPSのstreamsコマンドを使う必要がある。

 実際のZoneIdの内容を確認するには、「more < ファイル名:Zone.Identifier」というコマンドを実行するとよい。

 ZoneIdを持つファイルをエクスプローラから起動しようとすると、次のような確認画面が表示される(Windows Vista/Windows Server 2008以降のUACによってブロックされる場合は、そちらの許可ダイアログが優先される)。

ZoneIdの付いたファイルの実行例
これはWindows 7上での実行例。ZoneIdの付いたファイルを実行しようとすると、このようなセキュリティの警告ダイアログが表示される。デジタル署名で発行元が確認できる場合でも同様のダイアログが表示され、やはり[実行]をクリックする必要がある。UACによってブロックされるアプリケーションの場合はUACの許可ダイアログが表示され、(ZoneIdの状態に関わらず)このダイアログは表示されない。
これをクリックしないと実行できない。
これをオフにすると、以後警告メッセージは表示されなくなる。

 ユーザーはこの画面に対して明示的に許可しない限り、ファイルは実行されない。このようにZoneIdは、インターネットからダウンロードしたファイルに対して注意を喚起する役目を持っている(実行を完全に禁止するわけではない。あくまでも警告するだけである)。

 ZoneIdが付いた.ZIPファイルを解凍すると、基本的には解凍された個別のファイルにもZoneIdが継承されるが、解凍方法やWindows OSのバージョンによっては欠落することもあるので、注意が必要である(詳細は先のTIPS参照。Windows 7ではダブルクリックして解凍しても、ZoneIdが維持されるようになっている)。

ZoneId情報やADS情報を削除するには?

 インターネット・ゾーンからダウンロードしたファイルに対する起動時の警告メッセージを抑止したければ、ZoneId情報を削除すればよい。そのためには、先ほどのプロパティ画面にある[ブロックの解除]というボタンをクリックする。するとZoneIdが格納されている代替データ・ストリームが削除され、メイン・データ・ストリームのみが含まれるファイルになる。

 ファイルが複数ある場合は、例えばストリームをサポートしないFATファイル・システムへいったんコピーし、元へ戻すという方法もある(FATへのコピー時にストリームが欠落するので、結果として削除できる)。

 だが、いずれの方法もあまり簡単ではない。前者の場合はいちいちプロパティ画面を開いて操作する必要があるし(サブフォルダが存在すると非常に面倒である)、後者は一時的なFATファイル・システムを用意しなければならない。

 このような場合は、Sysinternalsから提供されているstreamsコマンドを利用するとよい。これはコマンド・プロンプト上で利用するツールであり、代替データ・ストリーム情報の表示や(一括)削除が行える。本TIPSではこのツールの使い方を紹介する。

  操作方法

streamsコマンドの入手

 streams.exeはSysinternalsから提供されている、代替データ・ストリームの操作用コマンドである。代替データ・ストリーム名の列挙と削除ができる。

 このWebページからstreams.zipファイルをダウンロードし、解凍して中にあるstreams.exeを適当な実行用フォルダへコピーする。原稿執筆時点での最新版はstreams Ver.1.56(2007/04/27)である。Windows XP/Windows Server 2003以降のWindows OSで利用できる。

代替データ・ストリーム情報の表示

 streamコマンドにフォルダ名かパス名(ワイルドカード指定も可能)を付けて実行すると、対象となるファイルをスキャンし、代替データ・ストリームを含むファイル名と、代替データ・ストリーム名およびそのデータ・サイズが表示される。ファイル指定の前に「-s」オプションを付けると、サブフォルダも再帰的にスキャンして該当するファイルが表示される。例えば「streams -s . 」とするとカレント・フォルダ以下をすべてスキャンする。なお日本語を含むファイル名は正しく表示できないが、ストリーム情報の表示は正しく機能するようである。

F:\Download>streams * …代替データ・ストリーム情報の表示

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

F:\Download\ApplicationCompatibilityToolkitSetup.exe: …実行ファイルの例
   :Zone.Identifier:$DATA       26 …ストリーム(ZoneId)
F:\Download\Marvell_Yukon_x64_yk51x64_v11.27.1.3.zip:
   :Zone.Identifier:$DATA       26
F:\Download\Microsoft.url: …URLファイルの例
         :favicon:$DATA 3638 …ストリーム(アイコン・キャッシュ)
F:\Download\MSN.url:
         :favicon:$DATA 4286
F:\Download\myapp.exe:
   :Zone.Identifier:$DATA       26
F:\Download\VirtualChecker.zip:
   :Zone.Identifier:$DATA       26
F:\Download\Yahoo.url:
         :favicon:$DATA 6598
F:\Download\ZZsamplestream.txt: …代替データ・ストリームを4つ持つファイルの例
         :stream1:$DATA 817 …ストリーム1
         :stream2:$DATA 2228 …ストリーム2
         :stream3:$DATA 6461 …ストリーム3
         :stream4:$DATA 10694 …ストリーム4

F:\Download>more < myapp.exe:zone.identifier …ZoneId情報の確認
[ZoneTransfer] …このような内容が記録されている
ZoneId=3

F:\Download>

 ファイル名の次の行に「:Zone.Identifier:$DATA 26」などと表示されているが、これは「Zone.Identifier」という代替データ・ストリームが存在し、そのストリームのデータ長が26bytesである、という意味である。この例ではほかにも.URLファイル(IEのURLショートカット・ファイル)に「favicon」という代替データ・ストリームが存在している(リンク先のアイコン情報がキャッシュされている)。ストリーム名の最後にある「:$DATA」はデータ・ストリーム・タイプを表しているが、これは省略可能である(ほかにも拡張属性タイプなどがある。ストリームについてはマイクロソフトMSDNサイトの「File Streams[英語]」「プログラマから見た NTFS 2000 Part1: ストリームとハード リンク」などを参照のこと)。

代替データ・ストリーム情報の削除

 メイン・データ・ストリーム以外のストリームを削除するには、-dオプションを付けてstreamsコマンドを実行する。

F:\Download>streams -d * …代替データ・ストリームの全削除

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

F:\Download\ApplicationCompatibilityToolkitSetup.exe:
   Deleted :Zone.Identifier:$DATA …削除された
F:\Download\Marvell_Yukon_x64_yk51x64_v11.27.1.3.zip:
   Deleted :Zone.Identifier:$DATA
F:\Download\Microsoft.url:
   Deleted :favicon:$DATA
F:\Download\MSN.url:
   Deleted :favicon:$DATA
F:\Download\myapp.exe:
   Deleted :Zone.Identifier:$DATA
F:\Download\VirtualChecker.zip:
   Deleted :Zone.Identifier:$DATA
F:\Download\Yahoo.url:
   Deleted :favicon:$DATA
F:\Download\ZZsamplestream.txt:
   Deleted :stream1:$DATA …複数のストリームが削除された
   Deleted :stream2:$DATA
   Deleted :stream3:$DATA
   Deleted :stream4:$DATA

F:\Download>

 該当するファイルがスキャンされ、代替データ・ストリームがあればすべて削除される。残念ながら、特定のストリームだけを指定して削除することはできない。サブフォルダ以下をスキャンするには、「-s」オプションを指定する。ただし日本語を含むフォルダ中のファイルは処理されないようなので、cdコマンドを使って手動でフォルダを変更してから処理していただきたい(カレント・フォルダにある日本語のファイルについては正しく動作する)。ストリームを削除する権限が不足している場合はエラーが表示されるので、管理者として起動したコマンド・プロンプト上で作業を行うこと。End of Article

「Windows TIPS」

@IT Special

- PR -

TechTargetジャパン

Windows Server Insider フォーラム 新着記事
  • オンラインストレージ入門まとめ読み! (2017/4/28)
     @IT eBookシリーズの第27弾では、Amazon Drive/Googleドライブ/OneDriveの入門記事をまとめてお送りする
  • Mastodon(マストドン) (2017/4/26)
     ネット上で話題の「Mastodon」について解説。次世代Twitterとも称されるMastodonとはどのようなものなのか、特徴や問題点などを見ていこう
  • 第546話 悪夢のワケ (2017/4/25)
     うーーん……うわぁぁ! ハッ! あぁ、またインベーダーが迫ってくる夢か……、最近こればっかりだな…… はぁはぁ
  • Gmailを便利に使うための初期設定TIPS 8選 (2017/4/21)
     Gmailを便利に使うための初期設定をまとめた。Gmailを使い始めたら、この初期設定を行おう。うっかり誤送信を防止できたり、スターの使い勝手が向上したりする
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間
ソリューションFLASH