删除注册表项中选定的子项

删除注册表项中选定的子项

我需要删除注册表项中选定的子项。对于需要删除的其中一个子项,我尝试了以下方法:

(SET _KEY=SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC)
REG Delete "HKCU\%_KEY%" /V "C:\ProgramData\Microsoft\Windows\Start      Menu\Programs\UltraVNC\UltraVNC Viewer\UltraVNC Viewer (Listen Mode  Encrypt)).lnk
C:\Program Files\uvnc bvba\UltraVNC\vncviewer.exe
-dsmplugin SecureVNCPlugin64.dsm -listen 5500
" /f

它问我(Y 或 N)

我知道它不起作用,因为它不应该询问(Y 或 N),因为我有 /f。我认为问题是子项有多行。我需要删除此键下大约 60 个子项。我需要删除的所有子项在子项中都有“uvnc bvba”。最好有一个 for 循环来找到要删除的正确子项。

答案1

我想我已经知道如何回答我自己的问题了。

@Echo Off
Set "Key=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC"
Set "Str=uvnc bvba"
setlocal EnableExtensions DisableDelayedExpansion
for /F "EOL=E Delims=" %%I in ('@%SystemRoot%\System32\reg.exe query "%Key%" /v * ^| find "%Str%"') do (Echo=reg   delete "%Key%" /v "%%~I" /f 2>nul
if not errorlevel 1 echo Deleted "%%~I" from %Key%
)
endlocal

cmd /k

如果我做错了什么或者有更好的方法,我欢迎任何评论。

相关内容