所謂、Zone.Identifierという、NTFSの代替データストリーム(Alternate Data Stream[ADS])が付いてしまう。ローカル上でのファイルコピーなのになぜ?そして、「許可する」のチェックをつけても外れない。挙句の果てには「指定されたファイルがみつかりません」と怒られる。
いやいや、なんぞそれ。
原因と解決策
原因1
NASへの参照アドレスをIPアドレスで行うと、OSがネットワークゾーンが違うと判断し、ファイルにADSが付加されてしまう。
解決策
NASの参照をIPアドレスではなく、名前解決で行う。これだけでADS自体も消え、コピーや移動等も通常通り行えるようになる。
原因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
NASの名前が”nas-01”で、IPアドレスが、”192.168.0.100”の場合
(shareは共有フォルダ名)
\\192.168.0.100\share ←ADSが付加されてしまうアクセス方法
\\nas-01\share ←NASの名前でアクセスすると解消
※勿論、DNSやhosts等でNASのIPアドレスが、名前解決が出来ている事が前提。