次の方法で共有


Windows Defender アプリケーション制御 (WDAC) ポリシーを削除する

Windows Defender アプリケーションコントロール (WDAC) の一部の機能は、特定の Windows バージョンでのみ使用できます。 Windows Defender アプリケーション制御機能の可用性について詳しくは、こちらをご覧ください。

WDAC ポリシーの削除

1 つ以上の WDAC ポリシーを削除したり、展開したすべての WDAC ポリシーを削除したりする場合があります。 この記事では、WDAC ポリシーを削除するさまざまな方法について説明します。

重要

署名済み WDAC ポリシー

削除しようとしているポリシーが署名済みの WDAC ポリシーの場合は、最初にオプション 6 Enabled:Unsigned System Integrity Policy を含む署名付き置換ポリシーを展開する必要があります。

置き換えポリシーには、置き換えるポリシーと同じ PolicyId と、既存のポリシー以上のバージョンが必要です。 置き換えポリシーには、UpdatePolicySigners> も含まれている<必要があります。

有効にするには、このポリシーに、置き換える元のポリシーの <UpdatePolicySigners> セクションに含まれる証明書で署名する必要があります。

その後、ポリシーの UEFI 保護が非アクティブ化されるように、コンピューターを再起動する必要があります。 これを行わないと、ブート開始エラーが発生します。

ポリシーを削除する前に、最初に展開に使用するメソッド (グループ ポリシーや MDM など) を無効にする必要があります。 そうしないと、ポリシーがコンピューターに再デプロイされる可能性があります。

ポリシーを削除する前にポリシーを効果的に非アクティブにするには、まずポリシーを、次の変更を含む新しいポリシーに置き換えることができます。

  1. ポリシー規則を "許可 *" ルールに置き換えます。
  2. オプション 3 [有効]:[監査モード] を設定して、ポリシーを監査モードのみに変更します。
  3. オプション 11 を無効に設定する:スクリプトの適用
  4. すべての COM オブジェクトを許可します。 「WDAC ポリシーでの COM オブジェクトの登録を許可する」を参照してください。
  5. 該当する場合は、オプション 0 Enabled:UMCI を削除して、ポリシーをカーネル モードにのみ変換します。

重要

ポリシーを削除した後、コンピューターを再起動して有効にします。 デバイスを再起動しないと、WDAC ポリシーを削除することはできません。

CiTool.exe を使用して WDAC ポリシーを削除する

Windows 11 2022 Update 以降では、CiTool.exe を使用して WDAC ポリシーを削除できます。 管理者特権のコマンド ウィンドウで、次のコマンドを実行します。 PolicyId GUID というテキストを、削除する WDAC ポリシーの実際の PolicyId に置き換えてください。

    CiTool.exe -rp "{PolicyId GUID}" -json

次に、コンピューターを再起動します。

Intuneなどの MDM ソリューションを使用して WDAC ポリシーを削除する

Microsoft Intuneなどのモバイル デバイス管理 (MDM) ソリューションを使用して、ApplicationControl CSP を使用してクライアント マシンから WDAC ポリシーを削除できます。

ApplicationControl CSP の使用に関する具体的な情報については、MDM ソリューション プロバイダーに問い合わせてください。

次に、コンピューターを再起動します。

スクリプトを使用して WDAC ポリシーを削除する

スクリプトを使用して WDAC ポリシーを削除するには、スクリプトでコンピューターからポリシー ファイルを削除する必要があります。 複数のポリシー形式 (1903 以降) WDAC ポリシーについては、次の場所にあるポリシー ファイルを探します。 PolicyId GUID は、削除する WDAC ポリシーの実際の PolicyId に置き換えてください。

  • <EFI システム パーティション>\Microsoft\Boot\CiPolicies\Active\{PolicyId GUID}.cip
  • <OS ボリューム>\Windows\System32\CodeIntegrity\CiPolicies\Active\{PolicyId GUID}.cip

上記の 2 つの場所に加えて、 単一のポリシー形式の WDAC ポリシーの場合は、次の場所にある可能性がある SiPolicy.p7b というファイルも検索します。

  • <EFI システム パーティション>\Microsoft\Boot\SiPolicy.p7b
  • <OS ボリューム>\Windows\System32\CodeIntegrity\SiPolicy.p7b

次に、コンピューターを再起動します。

単一の WDAC ポリシーを削除するためのサンプル スクリプト

# Set PolicyId GUID to the PolicyId from your WDAC policy XML
$PolicyId = "{PolicyId GUID}"

# Initialize variables
$SinglePolicyFormatPolicyId = "{A244370E-44C9-4C06-B551-F6016E563076}"
$SinglePolicyFormatFileName = "\SiPolicy.p7b"
$MountPoint =  $env:SystemDrive+"\EFIMount"
$SystemCodeIntegrityFolderRoot = $env:windir+"\System32\CodeIntegrity"
$EFICodeIntegrityFolderRoot = $MountPoint+"\EFI\Microsoft\Boot"
$MultiplePolicyFilePath = "\CiPolicies\Active\"+$PolicyId+".cip"

# Mount the EFI partition
$EFIPartition = (Get-Partition | Where-Object IsSystem).AccessPaths[0]
if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force }
mountvol $MountPoint $EFIPartition

# Check if the PolicyId to be removed is the system reserved GUID for single policy format.
# If so, the policy may exist as both SiPolicy.p7b in the policy path root as well as
# {GUID}.cip in the CiPolicies\Active subdirectory
if ($PolicyId -eq $SinglePolicyFormatPolicyId) {$NumFilesToDelete = 4} else {$NumFilesToDelete = 2}

$Count = 1
while ($Count -le $NumFilesToDelete)
{

    # Set the $PolicyPath to the file to be deleted, if exists
    Switch ($Count)
    {
        1 {$PolicyPath = $SystemCodeIntegrityFolderRoot+$MultiplePolicyFilePath}
        2 {$PolicyPath = $EFICodeIntegrityFolderRoot+$MultiplePolicyFilePath}
        3 {$PolicyPath = $SystemCodeIntegrityFolderRoot+$SinglePolicyFormatFileName}
        4 {$PolicyPath = $EFICodeIntegrityFolderRoot+$SinglePolicyFormatFileName}
    }

    # Delete the policy file from the current $PolicyPath
    Write-Host "Attempting to remove $PolicyPath..." -ForegroundColor Cyan
    if (Test-Path $PolicyPath) {Remove-Item -Path $PolicyPath -Force -ErrorAction Continue}

    $Count = $Count + 1
}

# Dismount the EFI partition
mountvol $MountPoint /D

コンピューター上の WDAC ポリシーを削除するには、管理者としてスクリプトを実行する必要があります。

ブート停止エラーの原因となっている WDAC ポリシーを削除する

ブート クリティカルなドライバーをブロックする WDAC ポリシーを使用すると、ブート停止エラー (BSOD) が発生する可能性がありますが、これはポリシーでオプション 10 Enabled:Boot Audit On Failure を設定することで軽減できます。 さらに、署名された WDAC ポリシーは、システムへの管理レベルのアクセス権を取得した管理操作やマルウェアからポリシーを保護します。 このため、署名された WDAC ポリシーは、管理者であっても署名されていないポリシーよりも意図的に削除するのが困難です。 署名された WDAC ポリシーを改ざんまたは削除すると、BSOD が発生します。

ブート停止エラーの原因となっているポリシーを削除するには:

  1. ポリシーが 署名済みの WDAC ポリシーの場合は、 UEFI BIOS メニューからセキュア ブートをオフにします。 BIOS メニュー内のセキュア ブートをオフにする場所の特定については、元の機器メーカー (OEM) に問い合わせてください。
  2. コンピューターの [高度なブート オプション] メニューにアクセスし、[ ドライバー署名の適用を無効にする] オプションを選択します。 起動時に [高度なブート オプション] メニューにアクセスする手順については、OEM に問い合わせてください。 このオプションは、単一のブート セッションに対して、WDAC を含むすべてのコード整合性チェックを一時停止します。
  3. Windows を正常に起動し、サインインします。 次に、 スクリプトを使用して WDAC ポリシーを削除します
  4. 上記の手順 1 でセキュア ブートをオフにし、ドライブが BitLocker によって保護されている場合は、 BitLocker 保護を一時停止 してから、UEFI BIOS メニューからセキュア ブートをオンにします。
  5. コンピューターを再起動します。

ドライブが Bitlocker によって保護されている場合は、上記の手順 1 から 2 を実行するために Bitlocker 回復キーが必要な場合があります。