Powershell 无法写入注册表项 HKLM:\Software\Policies\Microsoft\Windows Defender\Real-Time Protection

Powershell 无法写入注册表项 HKLM:\Software\Policies\Microsoft\Windows Defender\Real-Time Protection

我想使用 Powershell 添加一个注册表项来设置一个组策略,以禁用 Windows Defender 中的 OnAccessProtection,以下操作不会以管理员身份运行而产生任何错误,但不执行任何操作:

  • $registryPath = "HKLM:\Software\Policies\Microsoft\Windows Defender\Real-Time Protection"
    $Name = "DisableOnAccessProtection"
    $value = "1"
    
    if(!(Test-Path $registryPath)) {
      New-Item -Path $registryPath -Force | Out-Null
    }
    
    New-ItemProperty -Path $registryPath -Name $name -Value $value -PropertyType DWORD -Force
    
  • 当我打开RegEdit尝试添加时DWORD,收到错误:
    Cannot create value: Error writing to the registry
    

因此,即使是管理员,我在这里也没有访问权限;我该如何设置注册表值?

答案1

观察:在全新安装的 Windows 10 上进行测试,无需以管理员身份运行对相关注册表项的权限进行任何编辑。


1.如果不存在 Reg 键,您可以创建

2.设置值后Type改为PropertyType

3.您还可以检查键是否存在,以及值是否存在1

4.如果键存在并且值等于1,则您的脚本无需执行任何操作!

$registryPath='HKLM:\Software\Policies\Microsoft\Windows Defender\Real-Time Protection'
$Name ="DisableOnAccessProtection"; $Value= '1'


if (!(Test-Path $registryPath)) { 
    
     New-Item -Path $registryPath -Force | Out-Null

     Set-ItemProperty -Path $registryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null   
  
  } elseif ((Get-ItemProperty $registryPath).$Name -ne $Value) {
   
     Set-ItemProperty -Path $registryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null
 
 } else { 
 
   Write-Host nothing to do!
 
 }  

相关内容