我正在尝试删除批处理文件中的注册表项,这就是我正在做的事情。
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM" /f
我收到以下错误:
ERROR: Access is denied.
但是,我只需要打开regedit.exe并右键单击并删除注册表项就可以了!显而易见,我以管理员身份提升了批处理文件实例,以管理员身份登录,并尝试同时以管理员身份从cmd和powershell实例运行该批处理。管理员帐户具有注册表项的全部权限,这就是为什么我能够仅通过regedit GUI删除它们的原因。这是大型批处理文件脚本的一部分,关键是我希望整个过程都自动化。有什么想法吗?
答案 0 :(得分:0)
许多公司将GPO设置称为“防止对注册表编辑工具的访问”设置为“是”。 也许这是罪魁祸首。当您自己运行regedit时,计算机可能会首先向您显示UAC消息,然后单击“确定”?
如果尝试使用其他脚本语言(例如VBScript)删除密钥,则可能会得到有用的错误消息:
Const HKEY_LOCAL_MACHINE = &H80000002
Dim objReg, strKeyPath, strComputer
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\CCM"
objReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
Set objReg = Nothing
或使用PowerShell:
Remove-Item -Path 'HKLM:\SOFTWARE\Microsoft\CCM' -Recurse
答案 1 :(得分:0)
更多有关@Theo响应的跟进操作,似乎该命令使应该工作,从而阻止了您的访问。我建议尝试一下他的想法,如果它不起作用,尝试这个。
由于您具有管理员访问权限,因此您可以尝试为密钥提供Everyone
权限,因为您要做的就是将其删除。 REGINI
命令可以执行此操作,但是会增加一些脚本内容。
::Grant perms to REG key
echo \Registry\machine\SOFTWARE\Microsoft\NEW [7] >> "%~dp0KeyPermx.txt"
REGINI %~dp0KeyPermx.txt
del %~dp0KeyPermx.txt
::Remove the key
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NEW" /f