[Powershell] Set-MpPreference -DisableRealtimeMonitoring が機能しない


はじめに

Windows Defencerのリアルタイム保護の設定をPowershellにて設定しようとしたところ、うまく機能しませんでした。

PS C:\Windows\system32> Set-MpPreference -DisableRealtimeMonitoring 0
PS C:\Windows\system32> (Get-MpPreference).DisableRealtimeMonitoring
False
PS C:\Windows\system32> Set-MpPreference -DisableRealtimeMonitoring 1
PS C:\Windows\system32> (Get-MpPreference).DisableRealtimeMonitoring
False

原因を調べていたところ、改竄防止機能が有効になっていると、このリアルタイム保護機能を無効化できないみたいです。

本記事では、機能させるための手順を備忘録として残しておきます。

改竄防止機能の無効化

Windows セキュリティ画面から無効化する

  1. Windows セキュリティを開きます。

  2. 左メニューの「ウィルスと脅威の防止」を選択し、「設定の管理」をクリックします。

  3. 「改ざん防止」がONになっているので、「OFF」にします。

レジストリで無効化する

下記レジストリを設定することで無効化が可能です。

キー : HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows Defender¥Features
名前 : TamperProtection
種類 : DWORD
値  : 0(無効) / 5(有効)

もし、書き換え時にエラーが発生した場合は、アクセス権がない場合がほとんどですので、所有者の変更や権限の変更をしてください。(ここでは省きます)

リアルタイム保護の無効化

以下のコマンドをPowerShellにて実行します。

PS C:¥Windows¥system32> Set-MpPreference -DisableRealtimeMonitoring 0
PS C:¥Windows¥system32> (Get-MpPreference).DisableRealtimeMonitoring
False

有効化してみます。

PS C:¥Windows¥system32> Set-MpPreference -DisableRealtimeMonitoring 1
PS C:¥Windows¥system32> (Get-MpPreference).DisableRealtimeMonitoring
True

問題なく動作していますね。

最後に

手動でWindowsセキュリティ画面でリアルタイム保護を無効にすれば、普通に無効になります。

しかし、企業によっては、全員に対応してもらうのは難しい場合があるかと思います。

そういった時に定期的に自動で無効化/有効化したいなどといったケースに利用できるかと思います。