WindowsPCにて、インターネット上からダウンロードしたファイルには、自動的にセキュリティ保護のための属性が付与されます。ファイルのプロパティを見てみると、
「このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」

と表示されています。「許可する」にチェックを入れてOKを押せば解除されますが、複数ファイルいっぺんにこの操作をすることはできませんし、正直この属性は邪魔ですらあります。ということで、一斉解除する方法をメモ。
そもそもこの属性は、NTFSファイルシステムが持っている、代替データストリーム(Alternate Data Stream)という機能。そのうち、ファイルのダウンロード元のゾーンを示す情報が、Zone.Identifierで、これがその属性です。
一斉解除方法1:Powershellコマンド(Unblock-File)を使う
PowershellのUnblock-Fileコマンドを使えば解除できるので、それをフォルダ配下でいっぺんに実行するbatファイルを書きます。
Unblock.bat
powershell "Get-ChildItem -Recurse | Unblock-File"
このbatファイルを、お好みのフォルダに入れてダブルクリック実行すれば、そのフォルダ配下のZone.Identifierを削除してくれます。なので、「ダウンロード」フォルダにこのbatファイルを入れておいて、ダウンロードのたびにこれをダブルクリック実行する、などすれば、一括解除が便利に行えます。
一斉解除方法2:そもそもZone.Identifier属性自体がつかないようにしてしまう
毎回解除するのすらめんどくさい場合は、最初からこの属性がつかないようにしてしまえばいいです。EdgeやChromeなどのブラウザからファイルをダウンロードすると、自動的にZone.Identifierと呼ばれる代替データストリームが付与されますが、Windows側の設定を変更すれば、ダウンロード時にこの情報が付与されないようにすることができます。これにより、ダウンロード直後から「ブロック解除」が不要になります。
なんでこんな属性があるのか?
「Zone.Identifier」は、元々はWindows XP Service Pack 2の時代に、セキュリティを強化する目的で導入されました。当時は、インターネットからダウンロードした実行ファイルを無防備に開くことによるマルウェア感染リスクが深刻な問題とされており、Zone.Identifierによりファイルの「出どころ」を記録、これに応じて「セキュリティの警告」ダイアログを表示することで、ユーザーが不用意にファイルを実行してしまうことを防ぐ狙いがありました。
Windows XP SP2時代のセキュリティ対策
Windows XPが主流だった時代、ユーザーは頻繁にネットからファイルを取得し、実行していました。しかし、当時は現在ほどの強力なマルウェア対策ソフトやブラウザの保護機能が標準で備わっていなかったため、いわゆる「なりすまし」や悪意ある実行ファイルの展開が横行していました。こうした状況で、Microsoftは以下のような方策を打ち出しました。
- NTFSの代替データストリーム活用
NTFSには「メインストリーム」と「サブストリーム」という概念があります。通常、ファイル本体のデータ(テキストや実行コードなど)は「メインストリーム」に格納されます。一方、「サブストリーム」は補助的な情報格納エリアとして存在し、アイコンキャッシュやサムネイル、ダウンロード元情報などを残せます。このサブストリームを利用して、インターネット経由でダウンロードしたファイルには「Zone.Identifier」というゾーン情報(例えば「Zone ID = 3」など)を付与していました。 - Zone Identifierによる警告表示
ファイルにZone.Identifierが残っている場合、Windows XP SP2以降は「このファイルはインターネットから取得されました」といった警告を表示し、実行前にユーザーの許可を確認する仕組みを導入。この一手間が、うっかり有害プログラムを実行してしまうことを防ぐ効果を期待していました。
現在のWindowsでは「ゾーン情報」は必要なのか
時代は進み、Windows 8.1以降、そしてWindows 10、Windows 11へと移行する中で、セキュリティ対策のアプローチは大きく変化しています。現在のWindowsは、より高度なセキュリティ機能を標準搭載し、ブラウザ側でも「SmartScreenフィルター」やマルウェア対策、サンドボックス機能、評判ベースの保護など、複数レイヤーでの保護が当たり前となっています。
- SmartScreenフィルター:
たとえば、Internet Explorer 11(および後継のMicrosoft Edge)では、Zone.Identifierによるゾーン情報を参照せず、「SmartScreenフィルター」という仕組みでダウンロードファイルの信頼性を判断します。これにより、Zone IDは新しい保護モデルではあまり必要とされなくなりました。 - Windows Defenderの統合:
Windows 8.1以降、標準でWindows Defender(後のMicrosoft Defender)が動作し、定期的なマルウェアスキャンやリアルタイム保護が有効になっています。この二重三重のセキュリティ層により、単純な「Zone IDに基づく警告」は、セキュリティ機構としてやや過去のものとなりました。
ではなぜZone.Identifierの警告は残っているのか?
最新のWindows環境でも、ChromeやFirefoxといった一部のブラウザは依然としてZone.Identifierを付与しています。これは単純に「過去からの互換性維持」や「OSや環境によらない共通のセキュリティ慣行」として残されている可能性があります。また、ツールやスクリプトがファイルのZone IDを活用するワークフローを引き続き想定している場合もあります。
その結果、ブラウザによってはダウンロードしたファイルにZone.Identifierが記録され、Windowsのプロパティ画面で「セキュリティの警告」が表示されることがあります。ただし、この警告は最新のSmartScreenやDefenderによる保護と比べると、優先度は低めと考えられます。
とはいっても、これを付与しないようにするということは、セキュリティレベルは少々低下することになりますので自己責任でお願いします。
参考:https://news.mynavi.jp/article/win81tips-29/
方法1 グループポリシーエディター
WindowsのProエディション以上が必要な方法です。
- グループポリシーエディタを起動
- 「Win + R」キーを押して、
gpedit.msc
と入力、Enter。
- 「Win + R」キーを押して、
- 設定場所
- 「ユーザーの構成」
→「管理用テンプレート」
→「Windowsコンポーネント」
→「添付ファイル マネージャー」
- 「ユーザーの構成」
- 設定を変更
- 「ゾーン情報を添付ファイルに保存しない」(Do not preserve zone information in file attachments)
というポリシーを「有効」にします。
- 「ゾーン情報を添付ファイルに保存しない」(Do not preserve zone information in file attachments)
この設定を有効にすると、以降ダウンロードするファイルにはZone.Identifierが付与されなくなります。
方法2 レジストリ編集
この方法はHomeエディションでも可能です。
レジストリエディタを起動
- 「Win + R」キー →
regedit
と入力 → Enter
移動先HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments
(なければ「Attachments」キーを新規作成)
DWORD値を設定
「SaveZoneInformation」というDWORD(32ビット)値を作成または編集し、その値を1
にします。
SaveZoneInformation = 1
→ Zone情報を保持しない(=Zone.Identifier付与を行わない)
※ 反映にはログオフ・ログインまたは再起動が必要な場合があります。
参考記事:https://xtech.nikkei.com/it/pc/article/NPC/20060524/238877/
コメント