Показать полную графическую версию : [решено] Поиск по части имени в реестре
VladoSer
09-10-2021, 11:53
Здравствуйте, помогите написать скрипт для поиска разделов в реестре по части имени и их удаления
Необходимо в указанных ветках
HKLM\Software\Microsoft\SecurityManager\CapAuthz\ApplicationsEx
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications
найти разделы реестра (их может быть несколько), начинающиеся с
MicrosoftWindows.Client.CBS_дальшеидутрандомныесимволы
и удалить их.
DJ Mogarych
09-10-2021, 14:57
Powershell
dir "registry::HKLM\SOFTWARE\Microsoft\SecurityManager\CapAuthz\ApplicationsEx","registry::HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications" |
? name -match 'MicrosoftWindows.Client.CBS' |del
VladoSer
09-10-2021, 16:05
Друзья, пожалуйста, на Cmd или подскажите как это прилепить к bat
Нужно понимать, удалился ли раздел или нет.
megaloman
09-10-2021, 18:03
@Echo Off
cls
Call :DelReg "HKLM\Software\Microsoft\SecurityManager\CapAuthz\ApplicationsEx" "MicrosoftWindows.Client.CBS_*"
Call :DelReg "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications" "MicrosoftWindows.Client.CBS_*"
Pause
Exit /B
:DelReg
For /F "usebackq delims=" %%r In (`2^>nul REG QUERY %~1 /f %2 /k`) Do (
Echo %%r
Echo %%r| >nul 2>&1 Find /I "\" &&Reg Delete "%%r" /f
)
Exit /B
VladoSer
09-10-2021, 19:43
Код: Код
А если веток больше, ничего в коде не меняется? Просто добавить строчку
Call :DelReg "своя ветка" "MicrosoftWindows.Client.CBS_*"
?
И чтобы выключить отображение разделов, необходимо убрать?
Echo %%r
p.s, откуда мне убрать exit /b, мне необоходимо это добавить в середину кода, а после поиска и удаления закрывается cmd, а нужно, что бы батник продолжал свою работу.
VladoSer, либо Вы осваиваете пакетные файлы и разбираетесь самостоятельно, либо зараз озвучиваете все хотелки и условия.
VladoSer
09-10-2021, 20:41
либо зараз озвучиваете все хотелки и условия »
Здравствуйте. А разве наводящие вопросы по коду не являются показателем того, что я пытаюсь разобраться?
Я убирал exit /b в двух разных местах, и пытался сам разобраться, но у меня все равно не получается сделать так, чтобы код выполнялся в середине .bat файла. Поверьте, я не задавал бы вопроса, если бы знал как это делается, дергая просто так человека, но я новичок, и поэтому я спросил совета у старшего по цеху.
Очень здорово, что Вы научились, разобрались и умеете писать пакетные файлы, я же пока в процессе.
megaloman
09-10-2021, 21:01
Если веток больше, ничего в коде не меняется, просто добавить строчку
Call :DelReg "своя ветка" "нужная маска раздела"
Чтобы выключить отображение разделов:DelReg
For /F "usebackq delims=" %%r In (`2^>nul REG QUERY %~1 /f %2 /k`) Do (
Echo %%r| >nul 2>&1 Find /I "\" &&(>nul Reg Delete "%%r" /f ||Echo %%r)
)
Exit /B
При этом если Нужно понимать, удалился ли раздел или нет, если раздел не удалился, сообщение получите.
@Echo Off
.......................... Ваш код
..........................
Где-то внутри Call :DelReg ........................ сколько угодно штук
.......................... Ваш код
..........................
Где-то внутри возможно еще сколько угодно раз Call :DelReg ........................ сколько угодно штук
.......................... Ваш код
..........................
Exit /B
:Sub1
Код вашей процедуры 1 если она нужна
Exit /b
:Sub2
Код вашей процедуры 2 если она нужна
Exit /b
и т д куча ваших процедур если нужно
:DelReg
For /F "usebackq delims=" %%r In (`2^>nul REG QUERY %~1 /f %2 /k`) Do (
Echo %%r
Echo %%r| >nul 2>&1 Find /I "\" &&Reg Delete "%%r" /f
)
Exit /BПорядок следования процедур не имеет значения
VladoSer
09-10-2021, 21:13
Чтобы выключить отображение разделов »
Спасибо Вам, Вы уже выручаете не раз, буду разбираться и учиться.
Извините за беспокойство и большое кол-во вопросов.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.