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