我想使用 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!
}