【问题标题】:Activating rule 16 of WDAC doesnt allow to apply policy without rebooting激活 WDAC 规则 16 不允许在不重新启动的情况下应用策略
【发布时间】:2021-12-10 16:24:01
【问题描述】:

我在强制模式下使用命令应用 wdac 我尝试将其更改为强制模式,但如果不重新启动并激活规则 16,它就无法工作,我尝试使用 gpupdate /force 但它不起作用或者,有什么想法吗?

(W10 版本 1809)

政策已正确启用

这是我正在使用的代码:

$Policy="C:\Policies\Policy.xml"
$DeviceGuardPolicy="C:\Policies\DeviceGuardPolicy.bin"
$LGPOTxt="C:\Policies\LGPO\LGPO.txt" #Txt generated after lgpo backup
$WL="C:\Policies"
$SIPolicy="C:\Windows\System32\CodeIntegrity\SiPolicy.p7b"

  Disable-WdacPolicy
  rm $SiPolicy
  Set-RuleOption -FilePath $Policy -Option 3 
  ConvertFrom-CIPolicy $Policy $DeviceGuardPolicy
  ConvertFrom-CIPolicy -XmlFilePath $Policy -BinaryFilePath $SIPolicy 
  Enable-WdacPolicy

$ActivatePolicy="Computer`r`nSOFTWARE\Policies\Microsoft\Windows\DeviceGuard`r`nDeployConfigCIPolicy`r`nDWORD:1`r`n`r`nComputer`r`nSOFTWARE\Policies\Microsoft\Windows\DeviceGuard`r`nConfigCIPolicyFilePath`r`nSZ:C:\\WL\\politicas\\DeviceGuardPolicy.bin"
$DesactivatePolicy="Computer`r`nSOFTWARE\Policies\Microsoft\Windows\DeviceGuard`r`nDeployConfigCIPolicy`r`nDELETE`r`n`r`nComputer`r`nSOFTWARE\Policies\Microsoft\Windows\DeviceGuard`r`nConfigCIPolicyFilePath`r`nDELETE"

function Enable-WdacPolicy
{
  (Get-Content -path $LGPOTxt -Raw).replace($DesactivatePolicy, $ActivatePolicy) | Set-Content -Path $LGPOTxt
    cd $WL
    .\LGPO.exe /t $LGPOTxt
    ConvertFrom-CIPolicy -XmlFilePath $Policy -BinaryFilePath $SIPolicy 
    gpupdate /force
  }
}

function Disable-WdacPolicy
{
    (Get-Content -path $LGPOTxt -Raw).replace($ActivatePolicy, $DesactivatePolicy) | Set-Content -Path $LGPOTxt
    cd $WL
    .\LGPO.exe /t $LGPOTxt
    gpupdate /force
  }
}

【问题讨论】:

  • 规则 16 的描述说它将“允许未来应用 WDAC 策略更新,而无需重新启动系统。”默认情况下未启用它,因此您至少在第一次设置策略时必须重新启动。还是在启用该规则后仍无法正常工作?
  • @Cpt.Whale 我已经尝试重启并启用了策略,我在 msinfo32.exe 中验证了

标签: windows powershell security operating-system windows-defender


【解决方案1】:

我找到了这个解决方案

Invoke-CimMethod -Namespace root\Microsoft\Windows\CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{FilePath = $DestinationBinary}

在 gpupdate /force 刷新 msinfo32.exe 中的策略后添加这行代码

【讨论】:

    最近更新 更多