Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поиск по части имени в реестре (http://forum.oszone.net/showthread.php?t=349765)

VladoSer 09-10-2021 11:53 2968375

Поиск по части имени в реестре
 
Здравствуйте, помогите написать скрипт для поиска разделов в реестре по части имени и их удаления
Необходимо в указанных ветках
Код:

HKLM\Software\Microsoft\SecurityManager\CapAuthz\ApplicationsEx
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications

найти разделы реестра (их может быть несколько), начинающиеся с
Код:

MicrosoftWindows.Client.CBS_дальшеидутрандомныесимволы
и удалить их.

DJ Mogarych 09-10-2021 14:57 2968381

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 2968385

Друзья, пожалуйста, на Cmd или подскажите как это прилепить к bat
Нужно понимать, удалился ли раздел или нет.

megaloman 09-10-2021 18:03 2968395

Код:

@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 2968399

Цитата:

Цитата megaloman
Код: Код

А если веток больше, ничего в коде не меняется? Просто добавить строчку
Код:

Call :DelReg "своя ветка" "MicrosoftWindows.Client.CBS_*"
?
И чтобы выключить отображение разделов, необходимо убрать?
Код:

Echo %%r
p.s, откуда мне убрать
Код:

exit /b
, мне необоходимо это добавить в середину кода, а после поиска и удаления закрывается cmd, а нужно, что бы батник продолжал свою работу.

Iska 09-10-2021 20:31 2968402

VladoSer, либо Вы осваиваете пакетные файлы и разбираетесь самостоятельно, либо зараз озвучиваете все хотелки и условия.

VladoSer 09-10-2021 20:41 2968403

Цитата:

Цитата Iska
либо зараз озвучиваете все хотелки и условия »

Здравствуйте. А разве наводящие вопросы по коду не являются показателем того, что я пытаюсь разобраться?
Я убирал exit /b в двух разных местах, и пытался сам разобраться, но у меня все равно не получается сделать так, чтобы код выполнялся в середине .bat файла. Поверьте, я не задавал бы вопроса, если бы знал как это делается, дергая просто так человека, но я новичок, и поэтому я спросил совета у старшего по цеху.
Очень здорово, что Вы научились, разобрались и умеете писать пакетные файлы, я же пока в процессе.

megaloman 09-10-2021 21:01 2968404

Если веток больше, ничего в коде не меняется, просто добавить строчку
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 2968406

Цитата:

Цитата megaloman
Чтобы выключить отображение разделов »

Спасибо Вам, Вы уже выручаете не раз, буду разбираться и учиться.
Извините за беспокойство и большое кол-во вопросов.


Время: 08:28.

Время: 08:28.
© OSzone.net 2001-