Skip to content

MS_MSBuildMarkOfTheWeb

nishi_74322014 edited this page Aug 21, 2026 · 1 revision

ビルド時に「due to its being in the Internet or Restricted zone or having the mark of the web on the file.」が発生

概要

PowerShell 3.0 以上の Unblock-File コマンドレットでブロックを解除できる。

# 指定のフォルダ配下のブロックを解除
ls "C:\Work\Download Files" -r | unblock-file

# カレント配下のブロックを解除
ls . -r | unblock-file

移行メモ(誤記): 原文の 1 行目
ls "C:\Work\Download Files" -r unblock-file
パイプ(|)の脱字と判断し、2 行目と同じ形に修正した
(このままでは -r の引数として解釈され、動作しない)。

補足(Mark of the Web とは): MotW は、
インターネットから取得したファイルに Windows が付ける印である。

ファイルの NTFS 代替データ ストリーム(ADS)に
  Zone.Identifier という名前で記録される

  [ZoneTransfer]
  ZoneId=3          ← 3 = インターネット ゾーン
  ReferrerUrl=...
  HostUrl=...
ZoneId ゾーン
0 ローカル コンピューター
1 イントラネット
2 信頼済みサイト
3 インターネット(これが付くとブロックされる)
4 制限付きサイト

ビルドで問題になるのは、主に次の場面である。

場面 症状
zip をダウンロードして展開 中のファイル全部に MotW が付く
NuGet パッケージを手動配置 DLL が読み込めない
ビルド スクリプト(.ps1 / .targets 実行・インポートが拒否される
ヘルプ ファイル(.chm 内容が表示されない

最も多いのは 1 つ目で、
「GitHub から zip でソースを落として展開したらビルドできない」
というのが典型的な遭遇の仕方である。
git clone した場合は MotW が付かないため、
可能なら zip ではなく clone するのが根本的な予防策になる。

補足(確認と解除の方法): 状況の確認方法も挙げておく。

# MotW が付いているか確認する
Get-Item .\Foo.dll -Stream Zone.Identifier -ErrorAction SilentlyContinue
Get-Content .\Foo.dll -Stream Zone.Identifier

# 配下で MotW が付いているファイルを列挙する
Get-ChildItem -Recurse -File |
  Where-Object { Get-Item $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue }

# 解除(原文の方法)
Get-ChildItem -Recurse | Unblock-File

# ストリームを直接削除しても同じ
Get-ChildItem -Recurse | Remove-Item -Stream Zone.Identifier -ErrorAction SilentlyContinue

GUI からの解除: ファイルのプロパティを開き、
下部の [ブロックの解除] チェック ボックスをオンにする。
ただし、zip の中身に対しては個別に解除が必要なため、

**「展開する前に zip 自体のブロックを解除する」**方が効率的である
(展開後のファイルに MotW が伝播しなくなる)。

Unblock-File .\downloaded.zip
Expand-Archive .\downloaded.zip -DestinationPath .\src

補足(解除してよいかの判断): MotW はセキュリティ機構であり、
一括解除は本来「信頼できる取得元である」と確認した上で行う。

状況 判断
社内・自組織のリポジトリから取得した zip 解除してよい
公式サイトから取得し、ハッシュ/署名を検証済み 解除してよい
出所不明のファイル 解除しない(そもそも使わない)

CI での回避策としては、

  • git clone を使う(MotW が付かない。最善)
  • アーティファクトの取得に信頼できる内部フィードを使う
  • どうしても zip を扱うなら、取得直後に Unblock-File を挟む

という順で検討する。

なお、Windows 11 では Office ファイルの MotW 保護が強化され、
ネットワーク共有経由でも MotW が付くようになった。
ファイル サーバー経由で成果物を配っている場合、
以前は起きなかった環境でも発生し得る点に注意する。

参考

Microsoft Learn


Tags: 移行, テスト, デバッグ, デプロイ, .NET開発

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally