拿掉商務用應用程控原則
注意
商務用應用程控的某些功能僅適用於特定的 Windows 版本。 深入了解 應用程控功能可用性。
拿掉應用程控原則
您可能會想要移除一或多個應用程控原則,或移除您已部署的所有應用程控原則。 本文說明移除應用程控原則的各種方式。
重要
已簽署的基底應用程控原則
如果您嘗試移除的基底原則是已簽署的應用程控原則,您必須先部署包含選項 6 Enabled:Unsigned System Integrity Policy 的已簽署取代原則。
取代原則必須與它要取代的 PolicyId 相同,以及等於或大於現有原則的版本。 取代原則也必須包含 <UpdatePolicySigners>。
若要生效,此原則必須以您想要取代之原始原則的 UpdatePolicySigners> 區段中<所包含的憑證簽署。
接著,您必須重新啟動計算機,才能停用原則的 UEFI 保護。 無法這樣做會導致開機啟動失敗。
已簽署的補充應用程控原則可以與未簽署的原則以相同方式移除,而不需要遵循上述步驟
拿掉任何原則之前,您必須先停用用來部署它的方法, (例如 群組原則 或 MDM) 。 否則,原則可能會重新部署至計算機。
若要在移除原則之前讓原則實際上處於非作用中狀態,您可以先將原則取代為包含下列變更的新原則:
- 將原則規則取代為 「Allow *」 規則;
- 設定選項 3 Enabled:Audit Mode 以將原則變更為僅稽核模式;
- 設定選項 11 已停用:腳本強制執行;
- 允許所有 COM 物件。 請參閱 在應用程控原則中允許 COM 對象註冊;
- 如果適用,請移除選項 0 Enabled:UMCI ,只將原則轉換成核心模式。
使用 CiTool.exe 移除應用程控原則
從 Windows 11 2022 Update 開始,您可以使用 CiTool.exe 移除應用程控原則。 從提升許可權的命令視窗中,執行下列命令。 請務必將文字 PolicyId GUID 取代為您想要移除之應用程控原則的實際 PolicyId:
CiTool.exe -rp "{PolicyId GUID}" -json
注意
從 Windows 11 2024 更新開始,不帶正負號的原則可以使用 CiTool.exe 移除,而不需要重新啟動。 不過,在舊版 Windows 中,需要重新啟動才能完成移除程式。
使用 MDM 解決方案移除應用程控原則,例如 Intune
您可以使用行動 裝置管理 (MDM) 解決方案,例如 Microsoft Intune,使用 ApplicationControl CSP 從用戶端電腦移除應用程控原則。
如需使用ApplicationControl CSP的特定資訊,請洽詢您的 MDM 解決方案提供者。
然後重新啟動電腦。
使用腳本移除應用程控原則
若要使用腳本移除應用程控原則,您的腳本必須從計算機刪除原則檔案 () 。 如 需多個原則格式 (1903+) 應用程控原則,請在下列位置尋找原則檔案。 請務必將 PolicyId GUID 取代為您想要移除之應用程控原則的實際 PolicyId。
- <EFI 系統分割區>\Microsoft\Boot\CiPolicies\Active\{PolicyId GUID}.cip
- <OS 磁盘區>\Windows\System32\CodeIntegrity\CiPolicies\Active\{PolicyId GUID}.cip
針對 單一原則格式應用程控原則,除了上述兩個位置之外,也請尋找名為 SiPolicy.p7b 的檔案,該檔案可能位於下列位置:
- <EFI 系統分割區>\Microsoft\Boot\SiPolicy.p7b
- <OS 磁盘區>\Windows\System32\CodeIntegrity\SiPolicy.p7b
然後重新啟動電腦。
刪除單一應用程控原則的範例腳本
# Set PolicyId GUID to the PolicyId from your App Control 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
注意
您必須以系統管理員身分執行腳本,才能移除電腦上的應用程控原則。
拿掉導致開機停止失敗的應用程控原則
封鎖開機關鍵驅動程式的應用程控原則可能會導致開機停止失敗 (發生 BSOD) ,但您可以藉由在原則中設定選項 10 Enabled:Boot Audit On Failure 來減輕此問題。 此外,已簽署的應用程控原則會保護原則,避免系統管理操作和惡意代碼取得系統管理層級的存取權。 基於這個理由,簽署的應用程控原則會刻意比不帶正負號的原則更難以移除,即使是系統管理員也是如此。 竄改或移除已簽署的應用程控原則會導致 BSOD 發生。
若要移除導致開機停止失敗的原則:
- 如果原則是 已簽署的 應用程控原則,請從 UEFI BIOS 功能表關閉安全開機。 如需尋找在 BIOS 功能表中關閉安全開機位置的說明,請洽詢原始設備製造商 (OEM) 。
- 存取您電腦上的 [進階開機選項] 功能表,然後選擇 [ 停用驅動程序簽章強制執行] 選項。 如需在啟動期間存取 [進階開機選項] 功能表的指示,請洽詢您的 OEM。 此選項會暫停單一開機會話的所有程式代碼完整性檢查,包括應用程控。
- 正常啟動 Windows 並登入。 然後, 使用腳本移除應用程控原則。
- 如果您在上述步驟 1 中關閉安全開機,且您的磁碟驅動器受到 BitLocker 保護,請 暫停 BitLocker 保護 ,然後從 UEFI BIOS 功能表開啟安全開機。
- 重新啟動電腦。
注意
如果您的磁碟驅動器受到 Bitlocker 保護,您可能需要 Bitlocker 修復密鑰來執行上述步驟 1-2。