Как найти папку реестра по совпадению в ее значении

#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