🙄

Windowsでブロックされたツールを実行可能にする方法

に公開

スクショ
🙄 🙄 🙄

はじめに

ネットからダウンロードしたツールを実行しようとしたとき、Windowsのスマート アプリ コントロールMicrosoft Defender SmartScreen によってブロックされることがよくあります。

これはネットからダウンロードしたファイルに対し、安全のためにWindowsが ZoneID という識別子を付与して管理するためです。

この仕組みは Mark of the Web(MOTW) と呼ばれる Windows のセキュリティ機構の一部です。

ZoneIDの確認方法

ファイルにつけられた ZoneID を確認するには、PowerShellで次のコマンドを実行します。

Get-Content -Path "ファイル名" -Stream Zone.Identifier

ファイルに ZoneID がつけられていた場合、次のような結果が表示されます。
※インターネットから取得したファイルには ZoneID=3 が付与されています。

[ZoneTransfer]
ZoneId=3
ReferrerUrl=参照元の情報

一方、自PC内で作成したファイルに対して上記コマンドを実行すると、次のようなエラーが表示されます。エラーになるのは自分で作成したファイルには ZoneID が付与されていないためです。

Get-Content : ファイル 'C:\Temp\xxxx.exe' の代替データ ストリーム 'Zone.Identifier' を開けませんでした。
発生場所 行:1 文字:1
+ Get-Content -Path "xxxx.exe" -Stream Zone.Identifier
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Temp\xxxx.exe:String) [Get-Content], FileNotFoundException
    + FullyQualifiedErrorId : GetContentReaderFileNotFoundError,Microsoft.PowerShell.Commands.GetContentCommand

ZoneID の削除方法

EXEファイルに ZoneID=3 が付与されていると、実行時に スマートアプリコントロールSmartScreen によってブロックされる可能性が高くなります。

このブロックを回避するには、ファイルに付与されている ZoneID を削除します。

削除方法 その1:ファイルのプロパティで削除

もっとも一般的な削除方法は、ファイルのプロパティで削除する方法です。
対象のファイルを右クリックしてプロパティ画面を表示し、全般タブの一番下にあるセキュリティ項目で、許可する にチェックを入れて適用します。

ファイルプロパティ

削除方法 その2:コマンドで削除

PowerShellで以下のコマンドを実行することでも ZoneID を削除できます。

Unblock-File -Path "ファイル名"

それでもブロックされちゃう場合

スマートアプリコントロールでブロックされると、解除がうまくいかない場合があります。

そんな時は、一旦別のフォルダに展開しなおし、そこで ZoneID を削除してからファイルを元のファイルの場所に上書きコピーしましょう。

おわりに

いつも使っているツールが突然 Windows にブロックされると焦ってしまいますが、上記方法で解除することができます。

スマート アプリ コントロール機能自体をオフにすることも可能ですが、OS全体の設定である上に、再度オンにするには Windows のクリーンインストールが必要なため、あまりお勧めできません。

ここまで読んでくださって、ありがとうございます。
仕組みを知っておくと、ブロックされても落ち着いて対処できるようになる…はずなので、慌てず一つずつ確認してみてくださいね。

それでは今回はこの辺で。
また次の記事でお会いしましょう。バイバイ♪😊

Discussion