#windows #batch-file #registry #batch-processing #registrykey
Вопрос:
Я пишу пакетный файл для поиска в реестре. Мне нужно найти папку, внутри HKEY_LOCAL_MACHINESOFTWAREClassesInstallerProducts
которой ключ ProductName равен «MyProduct». Мне нужно найти эту папку и удалить ее.
Эта папка, которую я хочу удалить, будет выглядеть так: HKEY_LOCAL_MACHINESOFTWAREClassesInstallerProducts1A0614C849C672CF0A680DCFA3921735
Комментарии:
1. Откройте консоль cmd и введите запрос справки /? И Reg Удалить /?
Ответ №1:
В этом примере измените MyProduct
свою фактическую ProductName
строку, оставив закрывающий двойной знак нетронутым, в строке 4
:
@Echo Off
SetLocal EnableExtensions
Set "App=MyProduct"
Set "Key=HKEY_LOCAL_MACHINESOFTWAREClassesInstallerProducts"
For /F "Delims=" %%G In ('^""%SystemRoot%System32reg.exe" Query "%Key%" /S /F
"%App%" /D /E 2^>NUL ^| "%SystemRoot%System32findstr.exe" /I /R /X
"%Key:=\%\[^^^\]*"^"'
) Do Echo="%SystemRoot%System32reg.exe" Delete "%%G" /F ^>NUL
Pause
Выше будет напечатана только строка удаления, которую вы собираетесь запустить. Как только вы убедитесь, что это правильно, чтобы на самом деле удалить его, измените код на следующий (не забудьте снова изменить ProductName
строку). Пожалуйста, обратите внимание , что при удалении ключа из HKEY_LOCAL_MACHINE
, вам, скорее всего, потребуется запустить этот скрипт с повышенными правами или как пользователю, имеющему для этого достаточные разрешения.:
@Echo Off
SetLocal EnableExtensions
Set "App=MyProduct"
Set "Key=HKEY_LOCAL_MACHINESOFTWAREClassesInstallerProducts"
For /F "Delims=" %%G In ('^""%SystemRoot%System32reg.exe" Query "%Key%" /S /F
"%App%" /D /E 2^>NUL ^| "%SystemRoot%System32findstr.exe" /I /R /X
"%Key:=\%\[^^^\]*"^"'
) Do "%SystemRoot%System32reg.exe" Delete "%%G" /F >NUL