ローカルのNASにファイルを保存すると、インターネットからダウンロードされたファイル扱いになる。

所謂、Zone.Identifierという、NTFSの代替データストリーム(Alternate Data Stream[ADS])が付いてしまう。ローカル上でのファイルコピーなのになぜ?そして、「許可する」のチェックをつけても外れない。挙句の果てには「指定されたファイルがみつかりません」と怒られる。

いやいや、なんぞそれ。

原因と解決策

原因1

NASへの参照アドレスをIPアドレスで行うと、OSがネットワークゾーンが違うと判断し、ファイルにADSが付加されてしまう。

解決策

NASの参照をIPアドレスではなく、名前解決で行う。これだけでADS自体も消え、コピーや移動等も通常通り行えるようになる。

NASの名前が”nas-01”で、IPアドレスが、”192.168.0.100”の場合
(shareは共有フォルダ名)

\\192.168.0.100\share ←ADSが付加されてしまうアクセス方法
\\nas-01\share ←NASの名前でアクセスすると解消

※勿論、DNSやhosts等でNASのIPアドレスが、名前解決が出来ている事が前提。

原因2

Windows11 24H2バージョンでは、ファイルエキスプローラのバグが存在するようで、ADSが存在しないのに付加されているかのように表示される等、制御がおかしい。

解決策

消えないADSは、マイクロソフトのstreamsツールで削除する事ができる。

まず、ADSが付加されているのかを確認するには、コマンドプロンプトにてdir /rコマンドで確認できる。

C:\Users\hogehoge\Downloads>dir /r
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 9999-9999 です

 C:\Users\hogehoge\Downloads のディレクトリ

2024/11/11  10:00    <DIR>          .
2024/11/11  11:00    <DIR>          ..
2024/11/11  12:00           123,456 downloadfile.png
                                336 downloadfile.png:Zone.Identifier:$DATA

              XX 個のファイル       9,9999,999 バイト
              99 個のディレクトリ  999,999,999 バイトの空き領域

例として、「downloadfile.png」ファイルにADSが付加されている場合は、黄色部分の「 ~ :Zone.Identifier:$DATA」がファイルにぶら下がっている。

この場合、マイクロソフトのstreamsツールにて削除する事が出来る。リンク先からダウンロードしたZIPファイルを解凍し、その中のstreams.exeを、同ディレクトリにコピーし、コマンドプロンプトで実行する。

コマンドプロンプトなのに

このツール実行はコマンドプロンプト実行なのだが、初回のみわざわざGUIが表示され、ライセンスについて同意した後、実行される。

streams -h ヘルプで表示すれば一目両全だが、

書式 Streams.exe [-s] [-d] filename となり、ワイルドカードも使える。

即ち、以下のコマンドでそのフォルダにあるADSは全て削除される。

streams -d *

更に-sを追加すると、配下のサブフォルダも全て削除してくれる。

streams -d -s *

実行結果としては、以下のようになり、

C:\Users\hogehoge\Downloads\Streams>streams.exe -d -nobanner *
C:\Users\hogehoge\Downloads\downloadfile.png:
   Deleted :Zone.Identifier:$DATA

dirコマンドで再確認すると、ちゃんと消えている事がわかる。

C:\Users\hogehoge\Downloads>dir /r
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 9999-9999 です

 C:\Users\hogehoge\Downloads のディレクトリ

2024/11/11  10:00    <DIR>          .
2024/11/11  11:00    <DIR>          ..
2024/11/11  12:00           123,456 downloadfile.png

              XX 個のファイル       9,9999,999 バイト
              99 個のディレクトリ  999,999,999 バイトの空き領域

因みにコマンドに-nobannerオプションを付けると下記メッセージを出さずに実行できる。

streams v1.60 - Reveal NTFS alternate streams.
Copyright (C) 2005-2016 Mark Russinovich
Sysinternals - www.sysinternals.com