Fix: 'Operation did not complete successfully because the file contains a virus'

beginner🪟 Windows2026-06-30| Windows 10、Windows 11、Windows Server 2019/2022

Error Message

Operation did not complete successfully because the file contains a virus or potentially unwanted software.
#windows-defender#security#antivirus#false-positive#devops

TL;DR: 30秒で解決する方法

Windows Defenderがファイルを脅威と判断し、検疫しました。自分で作成したツールや信頼できるオープンソースユーティリティなど、そのファイルが安全だとわかっている場合は、すぐに復元できます。

  • スタートメニューでWindowsセキュリティを検索して開きます。
  • ウイルスと脅威の防止を選択し、保護の履歴をクリックします。
  • 最近ブロックされたファイルを見つけます(タイムスタンプで確認してください)。
  • 操作をクリックし、デバイスで許可または復元を選択します。
  • ファイルを再度実行してみます。

なぜWindowsがファイルをブロックするのか?

このエラーは単なる警告ではなく、完全なブロックです。Windowsのリアルタイム保護エンジンがCreateProcessまたはOpenFileコマンドを検知し、実行される前にファイルをセキュアなサンドボックスに移動させました。これは実際のマルウェアからユーザーを守るためですが、パワーユーザーや開発者にとっては「誤検知」が頻繁に発生することがあります。

開発者が特によく遭遇するケースは以下の通りです:

  • **新規バイナリ:**Go、Rust、C++でコンパイルされた、既知の評判を持たない未署名の.exeファイル。
  • **PyInstaller:**単一の実行ファイルにバンドルされたPythonスクリプトは、汎用トロイの木馬シグネチャに引っかかることが多い。
  • セキュリティツール:nmapなどのネットワークスキャナーや、Windowsが不審と判断するメモリツール。
  • **圧縮アーカイブ:**システムレジストリキーを変更するスクリプトが含まれた、ダウンロードした.zip.7zファイル。

ブロックを解除する方法

方法1:検疫からファイルを復元する

Windowsは通常、ファイルを削除するのではなく、隠しシステムフォルダに保管しています。セキュリティダッシュボードから取り戻すことができます。

  • タスクバーまたはスタートメニューからWindowsセキュリティを開きます。
  • ウイルスと脅威の防止に進みます。
  • 「現在の脅威」セクションで保護の履歴をクリックします。
  • 「脅威がブロックされました」または「検疫済みのアイテム」というエントリを見つけます。
  • エントリを展開します。ユーザーアカウント制御(UAC)のプロンプトで「はい」をクリックする必要があります。
  • 操作ボタンをクリックし、許可を選択します。

方法2:開発者向けの除外フォルダを作成する

毎回ファイルを復元するのは手間がかかります。開発者であれば、Defenderがスキャンしない専用フォルダを指定するのが最善策です。時間とCPUリソースを節約できます。

  • Windowsセキュリティ > ウイルスと脅威の防止に移動します。
  • 「ウイルスと脅威の防止の設定」の下にある設定の管理をクリックします。
  • 下にスクロールして除外の追加または削除をクリックします。
  • 除外の追加をクリックし、フォルダーを選択します。
  • C:\Users\Work\Projectsのようなプロジェクトのルートフォルダを選択します。このパス内のファイルはすべて干渉なしに実行されます。

方法3:PowerShellで除外設定を自動化する

リモートサーバーや新しいCI/CDランナーに設定を適用する必要がありますか?管理者権限のPowerShellセッションを使用して、UIを完全にスキップできます。

# プロジェクトディレクトリ全体を除外する
Add-MpPreference -ExclusionPath "C:\Dev\MyProject"

# 特定の実行ファイル名を無視するよう Defender に指示する
Add-MpPreference -ExclusionProcess "custom-compiler.exe"

# 特定の開発用拡張子を持つファイルをすべて無視する
Add-MpPreference -ExclusionExtension ".log"

方法4:誤検知キャッシュのクリア

コードを更新した後でも、Defenderが特定のファイルシグネチャに「固執」することがあります。エラーが続く場合は、ローカルの検知キャッシュをクリアするために強制的にシグネチャを更新する必要があるかもしれません。

# Defender ユーティリティフォルダに移動する
cd "C:\Program Files\Windows Defender"

# 現在の動的シグネチャキャッシュを削除する
.\MpCmdRun.exe -removedefinitions -dynamicsignatures

# 新しい定義ファイルの即時更新をトリガーする
.\MpCmdRun.exe -SignatureUpdate

修正の確認

環境が正常かどうか、以下の3点を確認してください。

  • 存在を確認:.exeが実際にフォルダに戻っているか確認します。見当たらない場合は、コードを再コンパイルするか、ツールを再ダウンロードしてください。
  • **CLIでテスト:**コマンドプロンプトからファイルを実行します。「操作が完了しませんでした」というポップアップが表示されずに起動すれば、除外設定が有効です。
  • **ログの確認:**PowerShellでGet-MpThreatを実行します。ファイルのステータスが「許可済み」と表示されるか、リストが空であれば問題ありません。

参考資料

Related Error Notes