インターネットからダウンロードしたファイルを開くとき、「このファイルはインターネットから取得したものです」と警告が出た経験はありませんか?
実はこれ、Windowsがファイルに付ける「ゾーン識別子(Zone Identifier)」という情報が関係しています。
ゾーン識別子はパソコンを守るために重要な役割を果たしていますが、仕組みを知らないとトラブルや誤解を招くこともあります。
この記事では:
- Windowsのゾーン識別子の基本概念と仕組み
- セキュリティ機能としての役割と重要性
- 具体的な警告メッセージとその対処法
- 安全にファイルを扱うための実践的なガイドライン
をくわしく解説します。これを読めば、ゾーン識別子と安全に付き合う方法がわかります。
ゾーン識別子の基本概念

ゾーン識別子とは何か?
定義と目的
ゾーン識別子(Zone Identifier)とは、Windowsがファイルに対して付与する「どこから来たファイルなのか」を示すメタデータです。
この情報は、ファイルの安全性を判断し、適切なセキュリティ対策を適用するために使用されます。
代替データストリーム(ADS)による実装
ゾーン識別子は、NTFSファイルシステムの「代替データストリーム(Alternate Data Stream: ADS)」という機能を使って実装されています。
これにより、ファイル本体のデータを変更することなく、追加の情報を保存できます。
実際の保存場所
filename.exe:Zone.Identifier
ファイル名の後に:Zone.Identifier
という形で、目に見えない付加情報として保存されています。
ゾーン識別子の値と意味
標準的なゾーン値
ゾーン値 | 名称 | 説明 | セキュリティレベル |
---|---|---|---|
0 | マイコンピュータ | ローカルのファイル | 最も信頼できる |
1 | ローカルイントラネット | 社内ネットワーク等 | 信頼できる |
2 | 信頼済みサイト | Internet Explorerで信頼済みに設定されたサイト | 信頼できる |
3 | インターネット | 一般的なインターネットサイト | 注意が必要 |
4 | 制限付きサイト | 明示的に制限されたサイト | 最も危険 |
ゾーン識別子の詳細情報
基本的な内容例
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://www.example.com/download
HostUrl=https://cdn.example.com/files/software.exe
各項目の説明
- ZoneId:上記表のゾーン値
- ReferrerUrl:ダウンロードページのURL
- HostUrl:実際のダウンロード元URL
ゾーン識別子が付与される場面
自動的に付与されるケース
ブラウザでのダウンロード
- Chrome、Edge、Firefox等での通常のダウンロード
- 右クリック→「名前を付けて保存」
- リンクをクリックしてのダウンロード
メールの添付ファイル
- Outlookで保存した添付ファイル
- Webメールからダウンロードした添付ファイル
ネットワーク経由の取得
- ネットワークドライブからのコピー
- SharePoint等からのダウンロード
- FTP経由でのファイル取得
付与されないケース
直接作成されたファイル
- 自分で作成したファイル
- USBメモリ等から直接コピーしたファイル
- CD/DVDからコピーしたファイル
セキュリティ機能としての役割

Windows Defender SmartScreenとの連携
SmartScreen機能の動作
ダウンロード時のチェック
- ファイルの評判をクラウドで確認
- 未知または危険なファイルを検出
- ゾーン識別子に基づいて警告表示
実行時の保護
Windows によって PC が保護されました
Windows Defender SmartScreen により、認識されないアプリの起動が停止されました。
このアプリを実行すると、PC に問題が起こる可能性があります。
段階的な警告システム
レベル1:情報表示
- 「このファイルはインターネットから取得されました」
- ユーザーが選択可能
レベル2:警告表示
- 黄色い警告アイコン
- 「実行しますか?」の確認
レベル3:ブロック
- 赤い警告画面
- 「詳細情報」をクリックしないと実行不可
アプリケーション別の動作
Microsoft Office
マクロの制限
セキュリティの警告
このファイルのソースが信頼できないため、Microsoft Office はマクロを無効にしました。
保護されたビューの適用
- インターネットから取得されたOffice文書
- 編集機能の制限
- 「編集を有効にする」ボタンの表示
PowerShell
実行ポリシーとの連携
.\script.ps1 : ファイル .\script.ps1 を読み込めません。
ファイルはインターネットからダウンロードされており、
このコンピューターでの実行がブロックされています。
Unblock-Fileコマンドレット
Unblock-File -Path .\script.ps1
Internet Explorer/Edge
ダウンロード時の警告
- ファイルの種類に応じた警告
- 実行、保存、キャンセルの選択肢
- SmartScreenによる追加チェック
具体的な警告メッセージと対処法

よく見る警告メッセージ
実行ファイル(.exe)の警告
メッセージ例
開いているファイル - セキュリティの警告
この種類のファイルはコンピューターに害を与える可能性があります。
インターネットからダウンロードしたファイルは有用な場合もありますが、
この種類のファイルはコンピューターに害を与える可能性もあります。
このソフトウェアの発行元を信頼しますか?
安全な対処法
- 発行元の確認:デジタル署名の有無と発行者
- ウイルススキャン:Windows Defenderやサードパーティ製ソフトでスキャン
- ハッシュ値の確認:公式サイトのハッシュ値と比較
圧縮ファイル(.zip)の警告
メッセージ例
このファイルは他のコンピューターから取得されました。
このファイルをブロックして、このコンピューターを保護する可能性があります。
対処手順
- ファイルを右クリック→プロパティ
- 「セキュリティ」セクションの「許可する」チェックボックス
- 「OK」をクリックして適用
アプリケーション固有の問題
PowerShellスクリプトのブロック
問題の発生場面
PS C:\> .\automation.ps1
.\automation.ps1 : このシステムではスクリプトの実行が無効になっているため、
ファイル C:\automation.ps1 を読み込むことができません。
解決方法
# 方法1: Unblock-Fileを使用
Unblock-File -Path .\automation.ps1
# 方法2: 複数ファイルを一括処理
Get-ChildItem -Path .\*.ps1 | Unblock-File
# 方法3: 実行ポリシーの一時変更
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
Microsoft Officeの保護されたビュー
問題の症状
- 文書が読み取り専用で開かれる
- マクロが実行されない
- 編集機能が制限される
適切な解除方法
- ファイルレベルでの解除
- ファイルのプロパティから「許可する」
- 信頼できる場所の設定
- ファイル→オプション→セキュリティセンター
- 信頼できる場所にフォルダを追加
- 発行元の信頼設定
- デジタル署名がある場合の発行元を信頼
ゾーン識別子の確認と管理

GUIでの確認方法
ファイルプロパティでの確認
手順
- 対象ファイルを右クリック
- 「プロパティ」を選択
- 「全般」タブの下部を確認
表示内容
セキュリティ: このファイルは他のコンピューターから取得されました。
このファイルをブロックして、このコンピューターを保護する可能性があります。
☐ 許可する
エクスプローラーでの表示
詳細ビューでの確認
- 表示→詳細
- 列の追加で「インターネットゾーン」を表示
- ファイル一覧でゾーン情報を確認
コマンドラインでの操作
PowerShellでの詳細確認
ゾーン識別子の表示
# 単一ファイルの確認
Get-Item -Path .\filename.exe -Stream Zone.Identifier
# ゾーン識別子の内容表示
Get-Content -Path .\filename.exe -Stream Zone.Identifier
出力例
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://github.com/user/repository/releases
HostUrl=https://github.com/user/repository/releases/download/v1.0/app.exe
一括処理のためのスクリプト
複数ファイルの一括確認
# 現在のディレクトリの全ファイルをチェック
Get-ChildItem | ForEach-Object {
$zoneid = Get-Content -Path $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue
if ($zoneid) {
Write-Host "$($_.Name): Zone Identifier Found"
$zoneid
}
}
特定の拡張子のファイルを一括処理
# .exeファイルのゾーン識別子を一括削除
Get-ChildItem -Filter "*.exe" | Unblock-File
# 確認付きで一括削除
Get-ChildItem -Filter "*.exe" | ForEach-Object {
Write-Host "Unblocking: $($_.Name)"
Unblock-File -Path $_.FullName
}
コマンドプロンプトでの操作
forfilesコマンドとの組み合わせ
特定日数以降のファイルを処理
forfiles /m *.exe /c "powershell -command \"Unblock-File -Path @path\""
ストリーム情報の直接削除
streams.exeを使用(Sysinternals)
streams.exe -d filename.exe
高度な管理とカスタマイズ

レジストリでの動作制御
ゾーン設定の確認
レジストリパス
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
各ゾーンの設定
- Zone 0: HKEY_CURRENT_USER…\Zones\0
- Zone 1: HKEY_CURRENT_USER…\Zones\1
- Zone 2: HKEY_CURRENT_USER…\Zones\2
- Zone 3: HKEY_CURRENT_USER…\Zones\3
- Zone 4: HKEY_CURRENT_USER…\Zones\4
特定アプリケーションの動作制御
Attachment Manager の設定
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments
重要な値
- SaveZoneInformation: ゾーン情報の保存(0=無効, 1=有効)
- HideZoneInfoOnProperties: プロパティでのゾーン情報表示(0=表示, 1=非表示)
グループポリシーでの管理
企業環境での一括制御
設定パス
コンピュータの構成 → 管理用テンプレート → Windows コンポーネント
→ 添付ファイル マネージャー
主要な設定項目
- ファイルの添付情報を保存しない
- 信頼できるゾーンからのファイルを含める
- 低リスクファイルタイプのリスト
- 高リスクファイルタイプのリスト
セキュリティポリシーとの統合
Windows Defender Application Controlとの連携
- ゾーン識別子に基づくポリシー適用
- 署名されていないファイルの制限
- 特定ゾーンからのファイルのブロック
自動化とスクリプト化
定期的なクリーンアップスクリプト
安全なファイルのゾーン識別子削除
# 設定ファイル
$TrustedPaths = @(
"C:\TrustedSoftware\",
"C:\CompanyTools\"
)
$TrustedExtensions = @(".exe", ".msi", ".ps1")
foreach ($path in $TrustedPaths) {
foreach ($ext in $TrustedExtensions) {
Get-ChildItem -Path $path -Filter "*$ext" -Recurse |
Where-Object {
(Get-Content -Path $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue) -ne $null
} |
ForEach-Object {
Write-Host "Removing zone identifier from: $($_.FullName)"
Unblock-File -Path $_.FullName
}
}
}
モニタリングスクリプト
新しくダウンロードされたファイルの監視
# ダウンロードフォルダの監視
$DownloadsPath = "$env:USERPROFILE\Downloads"
$Watcher = New-Object System.IO.FileSystemWatcher
$Watcher.Path = $DownloadsPath
$Watcher.EnableRaisingEvents = $true
Register-ObjectEvent -InputObject $Watcher -EventName Created -Action {
$Path = $Event.SourceEventArgs.FullPath
Start-Sleep 2 # ファイル書き込み完了待ち
$ZoneInfo = Get-Content -Path $Path -Stream Zone.Identifier -ErrorAction SilentlyContinue
if ($ZoneInfo) {
Write-Host "New file with zone identifier: $Path"
$ZoneInfo
}
}
セキュリティのベストプラクティス

安全なファイル取り扱いの原則
ダウンロード前の確認事項
信頼できるソースからの取得
- 公式サイトまたは信頼できるミラーサイト
- HTTPSでの暗号化通信
- デジタル署名の確認
ファイルの検証
# SHA256ハッシュの確認
Get-FileHash -Path .\downloaded_file.exe -Algorithm SHA256
ダウンロード後の安全確認
段階的な検証プロセス
- ウイルススキャン
# Windows Defenderでのスキャン Start-MpScan -ScanPath ".\downloaded_file.exe" -ScanType CustomScan
- デジタル署名の確認
# 署名情報の確認 Get-AuthenticodeSignature -FilePath .\downloaded_file.exe
- サンドボックスでのテスト実行
- Windows Sandbox の活用
- 仮想マシンでの事前テスト
企業環境でのセキュリティポリシー
ファイル取り扱いルールの策定
ダウンロード許可ポリシー
- 承認されたサイトからのみダウンロード許可
- 業務外ソフトウェアの制限
- IT部門による事前承認制度
ゾーン識別子の管理ルール
- 安易な解除の禁止
- 解除前の必須チェック項目
- ログ記録と監査の実施
技術的な対策の実装
Application Control ポリシー
<!-- WDAC ポリシー例 -->
<FileRules>
<Allow ID="ID_ALLOW_TRUSTED_ZONE"
Description="Allow files from trusted zones">
<Conditions>
<FileAttrib ZoneId="0,1,2"/>
</Conditions>
</Allow>
</FileRules>
PowerShell Constrained Language Mode
# 制限モードでの実行
$ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"
トラブルシューティング

よくある問題と解決方法
問題1:正常なファイルが常にブロックされる
症状
- 信頼できるソフトウェアが実行できない
- 業務で必要なファイルが開けない
診断手順
# ゾーン識別子の確認
Get-Content -Path .\problem_file.exe -Stream Zone.Identifier
# 署名情報の確認
Get-AuthenticodeSignature -FilePath .\problem_file.exe
# SmartScreenの状態確認
Get-MpPreference | Select-Object EnableNetworkProtection
解決方法
- 個別対応:Unblock-File での解除
- 信頼できる場所への移動
- 除外設定の追加
問題2:ゾーン識別子が削除できない
考えられる原因
- ファイルが使用中
- 管理者権限の不足
- ファイルシステムの問題
対処手順
# プロセス確認
Get-Process | Where-Object {$_.Path -like "*problem_file*"}
# 管理者権限での実行
Start-Process PowerShell -Verb RunAs -ArgumentList "-Command", "Unblock-File -Path 'C:\path\to\file.exe'"
# 代替データストリームの直接削除
Remove-Item -Path ".\file.exe:Zone.Identifier" -Force
問題3:一括解除後のセキュリティリスク
リスク評価
- 解除したファイルの記録
- 定期的なセキュリティスキャン
- 異常な動作の監視
対策の実装
# 解除ログの記録
function Remove-ZoneIdentifierWithLog {
param([string]$FilePath)
$ZoneInfo = Get-Content -Path $FilePath -Stream Zone.Identifier -ErrorAction SilentlyContinue
if ($ZoneInfo) {
$LogEntry = "$(Get-Date): Removed zone identifier from $FilePath"
$LogEntry | Add-Content -Path "C:\Logs\zone_removal.log"
Unblock-File -Path $FilePath
}
}
まとめ
Windowsのゾーン識別子は、現代のサイバーセキュリティにおいて重要な防御機能です。適切に理解し活用することで、安全性を保ちながら効率的にファイルを扱うことができます。
重要なポイント
- セキュリティ機能:ゾーン識別子はマルウェア感染を防ぐ重要な仕組み
- 適切な管理:無闇な解除は避け、信頼できるファイルのみ許可
- 段階的な確認:デジタル署名、ウイルススキャン、ハッシュ値確認の実施
- 企業環境での活用:ポリシーベースの統制と監査の実装
実践的なアプローチ
- 基本理解:ゾーン識別子の仕組みと目的を理解
- 適切な操作:GUIとコマンドラインの両方の操作方法を習得
- セキュリティ意識:安全確認プロセスの確立
- 継続的改善:新しい脅威に応じたポリシーの更新
コメント