# Antimalware Service ExecutableのCPUが高いとき、Defenderは何をスキャンしているか

Antimalware Service Executableは、Windowsに組み込まれたウイルス対策であるMicrosoft Defenderウイルス対策で、プロセスのファイルは`MsMpEng.exe`です。CPUを多く使うときは、たいていスキャン中です。予定されたスキャン、新しいセキュリティインテリジェンスが届いたあとのスキャン、または別の処理が今開いているファイルのリアルタイムスキャンです。設定を変える前にどれかを見極めます。対処はそれぞれ違い、どれもDefenderを恒久的にオフにする必要はありません。

## このプロセスがしていること

Microsoftの[Defenderのパフォーマンスに関するトラブルシューティング](https://learn.microsoft.com/en-us/defender-endpoint/troubleshoot-performance-issues)は、プロセス名をそのまま挙げています。Anti-malware Service Executable、`MsMpEng.exe`、Microsoft Defenderウイルス対策です。作業は3つに分かれます。

| 作業の出どころ | 起きるとき | 見え方 |
| --- | --- | --- |
| リアルタイム保護 | ファイルを開く、閉じる、起動するたび | CPUは別の作業に追従する。ビルド、インストーラー、アーカイブの展開、小さなファイルの大量コピー |
| スケジュールスキャン | 予定どおり。既定ではPCがアイドルのときだけ | 席を外すと始まり、戻っても続くことがある |
| セキュリティインテリジェンス更新後のスキャン | 新しい定義のインストール後 | 予定にない時刻のスキャンに見える |

多くの人が出会うのはリアルタイム保護です。同じ記事は、負荷が高くなる条件も挙げています。起動される署名のない`.exe`と`.dll`、データ置き場として使われるHTAやCHMのような複雑な形式、難読化されたスクリプト、プロファイルフォルダにあってネットワーク上の場所やOneDriveへ同期される`.iso`や`.vhdx`のような大きなファイルです。何千もの小さなファイルを書き出すプロジェクトのビルドは、日常でよくある形です。コンパイラが書くファイルは、どれもDefenderが見るファイルです。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-antimalware-service-executable-high-cpu-en-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-antimalware-service-executable-high-cpu-en.webp" width="1360" height="454" loading="lazy" alt="Defenderの3種類のスキャン">
  </picture>
  <figcaption>リアルタイムスキャンはほかの作業に追従し、スケジュールスキャンは時刻に従い、更新が独自のスキャンを始めることもあります。対処はそれぞれ違います。</figcaption>
</figure>

## 設定を変える前に確認する

`Ctrl + Shift + Esc`でタスクマネージャーを開き、CPUで並べ、同じ瞬間にほかに何が忙しいかをメモします。Antimalware Service Executableがビルド、インストーラー、大きなコピーと一緒に上がり下がりするなら、その作業をリアルタイムでスキャンしています。ほかに何もしていないのに忙しいなら、スキャンの可能性が高いです。数分待ってからもう一度見ます。終わって終わるスキャンは正常な動作で、故障ではありません。

次にスタートメニューからWindowsセキュリティを開き、「ウイルスと脅威の防止」へ進みます。[MicrosoftのWindowsセキュリティのガイド](https://support.microsoft.com/en-us/windows/virus-and-threat-protection-in-the-windows-security-app-1362f4cd-d71a-b52a-0b66-c2820032b65e)は、そこにあるスキャンのオプション(クイックスキャン、フルスキャン、カスタムスキャン、Microsoft Defenderウイルス対策 (オフラインスキャン))と保護の履歴を説明しています。ここで大切なのは保護の履歴です。Defenderが何かを検出して処理しているなら、CPU使用には理由があり、そこに出ている項目が対処の対象です。

どのファイルの負荷が一番高いかを正確に知りたいときは、Defenderのパフォーマンスアナライザーを使います。[Microsoftのアナライザーのガイド](https://learn.microsoft.com/en-us/defender-endpoint/tune-performance-defender-antivirus)は、遅い作業を再現している間のスキャンイベントを記録し、スキャン時間の長いファイル、パス、拡張子、プロセスを報告します。PowerShellを管理者として実行し、記録を始め、遅い作業を繰り返し、Enterで止めます。

```powershell
New-MpPerformanceRecording -RecordTo C:\Temp\defender.etl
Get-MpPerformanceReport -Path C:\Temp\defender.etl -TopFiles 10 -TopProcesses 10
```

パスは例です。存在するフォルダを使います。レポートはデータを読むだけで、設定は変えません。上位が自分のビルド出力やパッケージキャッシュなら、リアルタイム保護のコストが見つかっています。ダウンロードしたアーカイブや、見覚えのないツールなら、スキャンは続けます。

## スキャンはクイックが推奨の既定

[Microsoftのスキャンのガイド](https://learn.microsoft.com/en-us/defender-endpoint/schedule-antivirus-scans)は、定期のスケジュールスキャンにはクイックスキャンを勧めています。クイックスキャンは、レジストリキーやスタートアップフォルダなど、マルウェアがWindowsと一緒に起動するよう登録する場所を調べます。リアルタイム保護と合わせた範囲が、Microsoftが勧める保護です。フルスキャンは固定ドライブをすべて読み、大きなディスクでは数時間から数日かかり、Microsoftは原則としてスケジュールしないよう勧めています。自分でフルスキャンを始めたなら、終わるまでCPU使用は続きます。

同じガイドは、Defenderがスケジュールスキャンの15分前に更新を確認すると書いています。トラブルシューティングの記事は、セキュリティインテリジェンス更新後のスキャンが既定で走ると説明しています。選んだ覚えのない時刻にスキャンが現れるのは、このためです。

スケジュールスキャンを作業時間からずらすには、Microsoftの[タスクスケジューラの手順](https://support.microsoft.com/windows/schedule-a-scan-in-microsoft-defender-antivirus-54b64e9c-880a-c6b6-2416-0eb330ed5d2d)で、タスクスケジューラライブラリのMicrosoft、Windows、Windows Defenderを開き、Windows Defender Scheduled Scanの「トリガー」タブにトリガーを追加します。PCは付いているが使っていない時刻、たとえば昼休みを選びます。時刻を移してもスキャン自体は残ります。負担を払う時刻が変わるだけです。

## ビルドフォルダは除外より先に開発ドライブ

負荷が開発作業から来るなら、Windows 11でのMicrosoftの答えは[開発ドライブ](https://learn.microsoft.com/en-us/windows/dev-drive/)です。ソースリポジトリ、パッケージキャッシュ、ビルド出力のための、最低50GBの独立したReFSボリュームです。信頼された開発ドライブでは、Defenderがパフォーマンスモードで動きます。Microsoftはこれをフォルダ除外に代わる安全な方法と説明しています。ファイルは引き続きスキャンされ、ビルドへの影響は小さくなります。管理者のプロンプトから状態を確認できます。

```powershell
fsutil devdrv query D:
```

`D:`は自分の開発ドライブの文字に置き換えます。Cドライブを開発ドライブにはできず、既存のボリュームはフォーマットせずには変換できません。Microsoftは、Visual StudioやSDKなどの開発ツールはCに残すよう勧めています。キャッシュの移動は、設定を1つ足すより大きな変更です。開発ドライブのページには、npm、NuGet、pip、Cargo、Maven、Gradleの環境変数が載っています。どのフォルダなら代わりに削除できるかは、[Windowsの開発キャッシュ](/ja/windows/blog/windows-developer-caches)を見てください。

## 除外は信頼するフォルダだけに、失うものも知る

除外は、そのファイル、フォルダ、ファイルの種類、プロセスをDefenderがスキャンしなくします。Windowsセキュリティでは、[Microsoftの除外の手順](https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-security-811816c0-4dfd-af4a-47e4-c301afe13b26)が「ウイルスと脅威の防止」「設定の管理」「除外の追加または削除」と進み、同じページは除外した項目がデバイスとデータを危険にさらし得ると警告しています。Microsoftの[除外のリファレンス](https://learn.microsoft.com/en-us/defender-endpoint/microsoft-defender-antivirus-exclusions-configure)も、たいてい除外は不要だと書いています。

それでも追加するなら、範囲を狭くします。

- 自分の信頼するツールだけが書き込むフォルダ。プロジェクト1つのビルド出力など。ドライブ全体やユーザープロファイル全体にはしない。
- ダウンロード、デスクトップ、ブラウザーのダウンロードフォルダ、メールやチャットやインターネットからファイルを受け取るフォルダは除外しない。マルウェアが届く場所です。
- プロセスの除外は、そのプロセスが開くすべてのファイルに及びます。コンパイラやパッケージマネージャーを除外すると、それがダウンロードしたものもスキャンされなくなります。

除外は交換です。そのフォルダのCPUは減り、そこに置かれたものはスキャンされません。そのフォルダがダウンロードしたファイルを持ち始めたら、除外を外します。

## やってはいけないこと

レジストリ、グループポリシー、「debloat」スクリプト、第三者の調整ツールでDefenderを恒久的にオフにしないでください。Windowsセキュリティでリアルタイム保護をオフにするのは、設計上一時的です。[Microsoftは](https://support.microsoft.com/en-us/windows/virus-and-threat-protection-in-the-windows-security-app-1362f4cd-d71a-b52a-0b66-c2820032b65e)、しばらくすると自動で戻ると書いています。オフの間、開いたファイルやダウンロードしたファイルはスキャンされません。トラブルシューティングの記事がオフを勧めるのは、原因から外すための短い確認だけで、トラブルシューティングモードを通します。

タスクマネージャーでMsMpEng.exeを終了したり、Defenderのフォルダからファイルを削除したりしないでください。数字を下げるために`C:\`やユーザーフォルダ全体を除外しないでください。ほかのセキュリティ製品も動かしているなら、Microsoftの記事は、互いのプロセスを互いの除外に加えるよう勧めています。同じファイルを2つのスキャナーが見ることは、CPUが高くなる既知の原因です。

## 変更が効いたか確認する

スケジュールを移した、キャッシュを開発ドライブへ移した、狭い除外を加えた、そのあと同じ作業、たとえば同じビルドを繰り返し、比べます。アナライザーをもう一度記録し、そのフォルダにスキップ理由が出るか、スキャン時間が下がったかを確認できます。Windowsセキュリティの「ウイルスと脅威の防止」では、保護がオンのままであるべきです。

MoleはDefenderの設定や除外を変えません。ウィンドウ左上のMoleマークをクリックしたあと「Doctorを実行」から開くDoctorレポートは、Defenderのリアルタイム保護がオンかを示し、セキュリティインテリジェンスが1週間更新されていないことを知らせます。ほかの人がこのPCのセキュリティ設定を変えたあとに確認する価値があります。Defender以外のCPU使用は[WindowsのCPU使用率が高いとき](/ja/windows/blog/windows-high-cpu-usage)、ディスクが100%のままなら[タスクマネージャーでディスクが100%](/ja/windows/blog/windows-disk-100-percent)を見てください。

## よくある質問

### Antimalware Service Executableはウイルスですか?

正規のプロセスはWindowsの一部であるMicrosoft Defenderウイルス対策、`MsMpEng.exe`です。そこからの高いCPUは、たいていスキャンです。保護の履歴に検出が出ているなら、その項目に対処します。

### 何もしていないのにAntimalware Service ExecutableのCPUが高いのはなぜですか?

スケジュールスキャンはPCがアイドルのときに走り、Defenderは既定でセキュリティインテリジェンスの更新後にもスキャンします。クイックスキャンはたいてい自分で終わります。フルスキャンは数時間かかることがあります。

### Antimalware Service Executableを無効にできますか?

安全にはできません。リアルタイム保護をオフにしても一時的で、Windowsが戻します。ポリシーやスクリプトで恒久的に無効にすると、ファイルがスキャンされないままになります。スキャンの時刻を変えるか、開発ドライブを使います。

### Microsoft Defenderの高いCPUを直すために除外を追加すべきですか?

信頼するツールだけが書き込む狭いフォルダ、たとえばビルド出力だけです。Microsoftは、除外が保護を弱めると警告しています。ダウンロード、デスクトップ、ドライブ全体は除外しないでください。


Canonical: https://mole.fit/ja/windows/blog/antimalware-service-executable-high-cpu
