Как исправить полное удаление ключа реестра - PullRequest
0 голосов
/ 28 августа 2018

Я пытался найти ключи реестра, используя эту строку:

REG Query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData /F "Need removed manually Add-In" /S

Но он содержит следующие подразделы:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\145BA990C18DA984499E1D1F9A1BD64D
BB02C99E89C99CD4A8CC6A7AA7576194    REG_SZ    C:\Program Files (x86)\Need removed manually Add-In\SimonFell\PocketSoap\psDime.dll

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\37AC9AD16C5204A4D9D92967A6699DEE
    BB02C99E89C99CD4A8CC6A7AA7576194    REG_SZ    C:\Program Files (x86)\Need removed manually Add-In\SimonFell\PocketSoap\pSOAP32.dll

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\DFD1C740E6047204C8387A02138B234A
    BB02C99E89C99CD4A8CC6A7AA7576194    REG_SZ    C:\Program Files (x86)\Need removed manually Add-In\SimonFell\PocketSoap\pocketHTTP.dll

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\F3A3DDBA307ACB945868E32C44414A5E
    BB02C99E89C99CD4A8CC6A7AA7576194    REG_SZ    C:\Program Files (x86)\Need removed manually Add-In\SimonFell\PocketSoap\psProxy.dll

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\BB02C99E89C99CD4A8CC6A7AA7576194\InstallProperties
    DisplayName    REG_SZ    Need removed manually Add-In

End of search: 5 match(es) found.

Когда я пытался удалить, используя скрипт:

FOR /f "delims=" %%a IN ('REG Query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData /F "Need removed manually Add-In" /S') DO REG delete "%%a" /f

Я удаляю первый полный ключ успешно, но после этого я получаю сообщение об ошибке, потому что скрипт пытается удалить вторую строку с подробным описанием строки:

REG delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\145BA990C18DA984499E1D1F9A1BD64D" /f

Операция успешно завершена.

REG delete "    BB02C99E89C99CD4A8CC6A7AA7576194    REG_SZ    C:\Program Files (x86)\Need removed manually Add-In\SimonFell\PocketSoap\psDime.dll" /f

ОШИБКА: неверное имя ключа. Типа "REG DELETE /?" для использования.

Как я могу удалить только актуальные ключи и избежать этой ошибки?

1 Ответ

0 голосов
/ 28 августа 2018

Вот мой ответ, запоздало предоставленный в дубликате вопроса.

Используйте параметр поиска Reg Query, /F, и ищите только в значениях данных, /D, затем, чтобы удалить строки значений и количество поисков, которые вы можете используйте Find для вывода только тех строк, которые содержат строку HKEY_.

@Echo Off
Set "Key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData"
Set "Str=Need removed manually Add-In"
For /F "Delims=" %%A In ('REG Query "%Key%" /S /F "%Str%" /D^|Find "HKEY_"'
) Do Echo=Reg Delete "%%A" /F
Pause

Измените значения в строках 2 и 3 в соответствии с вашими конкретными требованиями.

Если вы довольны выводом, просто удалите Echo= из предпоследней строки и при необходимости удалите последнюю строку. (Обратите внимание, что я не рекомендую удалять разделы реестра таким образом, поэтому вы сами решаете, следует ли создавать резервную копию реестра до удаления этих ключей)


Обратите внимание, что вам может потребоваться запуск от имени администратора для удаления ключей в HKLM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...