Вы должны войти, чтобы создавать сообщения и темы.

Управление службами в реестре через BAT

Всех приветствую. Всех с Новым Годом.

Столкнулся с проблемкой и не понимаю как её решить. Суть в следующем: 
Вот есть у нас команда Скопированоfor /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "ConsentUxUserSvc" ^| find /i "ConsentUxUserSvc"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)

Если её выполнить, то параметр СкопированоStart в реестре изменит значение на 4. Всё логично, всё работает. НО! Если я создам BAT файл с этой командой и запущу его, то ничего не произойдёт. Кто знает в чём дело и как это можно поправить?

Привет
Скопированоfor /f %%I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "ConsentUxUserSvc" ^| find /i "ConsentUxUserSvc"') do (reg add "%%I" /v "Start" /t reg_dword /d 4 /f

Лайкнул Cronos
Cronos
Цитата: lоRes от 03.01.2021, 17:45

Привет
Скопированоfor /f %%I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "ConsentUxUserSvc" ^| find /i "ConsentUxUserSvc"') do (reg add "%%I" /v "Start" /t reg_dword /d 4 /f

 Блин, я тупой... 
А что если служба состоит из нескольких слов?  Почему-то не меняет в ситуации если в кавычки взяты несколько слов.

при этом пишет, что поменяло.

А всё, я уже прочитал мануал по функции. Щас проверю. Должно работать.

Мдаа, просто "замечательно" всё устроено. 

В общем, если имя состоит из нескольких слов, то при выполнении команды почему-то берётся только первое и создаётся раздел реестра с таким именем. 
Пробовал кавычки туда-сюда ставить, а толку никакого. Проще говоря, если имеем

Скопированоfor /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "Consent UxUser Svc" ^| find /i "Consent UxUser Svc"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)

То в реестр прилетит раздел с именем Consent, а не СкопированоConsent UxUser Svc как должно бы было быть по-идее.

Я так понимаю выделенное это тоже ветка?
Скопированоfor /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "Consent UxUser Svс" ^| find /i "Consent UxUser Svc"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)

Цитата: lоRes от 03.01.2021, 19:00

Я так понимаю выделенное это тоже ветка?
Скопированоfor /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "Consent UxUser Svс" ^| find /i "Consent UxUser Svc"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)

Это как пример, да. То есть если у тебя ветка реестра имеет пробелы в названии, то вторая часть выражения не выполняется почему-то. 
Я пробовал вводить отдельно, до FIND.  всё работает. Оно ищет нужную ветку и находит, но как только прописываешь всю команду целиком получаешь вместо этой ветки новую с именем Consent и внутри неё параметр Start

Всё. Решил задачу. 

Оказалось проблема в команде FOR. По умолчанию она берёт первое слово. Чтобы этого избежать надо принудительно задать разделители. 

Скопированоfor /f "delims=  " %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "СкопированоConsent UxUser SvсСкопировано" ^| find /i "Consent UxUser Svc"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)

Лайкнул lоRes
lоRes

Всем добрый день. 
Вопрос чисто академический. Не могу понять в чём дело. 
Когда-то я решил проблему с редактированием служб в реестре через bat файл и переходом в безопасный режим, чтобы ничего не мешало. Вся эта схема прекрасно работала, но винда обновилась до последней версии и теперь батник при запуске выдаёт Access denied. 

Я полез смотреть что там такое может быть и, честно говоря, ничего не понял. Сравниваю две службы. Одну я могу редактировать, а другую нет. Разрешения одинаковые у них. То есть владельцем является группа Администраторы и им дан полный доступ. В чём беда не пойму. Какой-то новый способ защиты? Но в чём тогда заключается.. очень странно. 

Сразу оговорюсь, что я могу поправить значения через внешний редактор и Live образ, но принципиально не хочу этого делать:
Во-первых, очень муторно. 
Во-вторых, править нужно будет вручную, подключая удалённый реестр, а это уже означает, что не получится использовать скрипт, что рушит саму идею. 

Хотелось бы понять что защищает реестр.

Есть идеи?

Добрый 🖐
Попробуй ещё раз в командной строке от Администратора: Скопированоnet user Admin /active:yes, где Admin – имя Твоей учётки.

Цитата: Сергей от 03.04.2021, 11:03

Добрый 🖐
Попробуй ещё раз в командной строке от Администратора: Скопированоnet user Admin /active:yes, где Admin – имя Твоей учётки.

Приветствую, Сергей.

Не помогает. Я проверил так же нахождение учётки в нужной группе. Всё правильно. Учётная запись Administrator состоит в группе Administrators. В начале я думал, что это может быть какой-нибудь защитный модуль антивируса, но в безопасном режиме антивирусы не грузятся... И тут я решил это проверить ручками. 
какого же было моё удивление, когда я увидел, что антивирус научился прописывать себя в загрузку безопасного режима... Сижу немножко в шоке. Раньше он такого не умел. Ну, теперь понятно куда копать.