Управление службами в реестре через BAT
Цитата: Cronos от 03.01.2021, 17:43Всех приветствую. Всех с Новым Годом.
Столкнулся с проблемкой и не понимаю как её решить. Суть в следующем:
Вот есть у нас команда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)
Если её выполнить, то параметр СкопированоStart в реестре изменит значение на 4. Всё логично, всё работает. НО! Если я создам BAT файл с этой командой и запущу его, то ничего не произойдёт. Кто знает в чём дело и как это можно поправить?
Цитата: 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 "ConsentUxUserSvc" ^| find /i "ConsentUxUserSvc"') do (reg add "%%I" /v "Start" /t reg_dword /d 4 /f
Цитата: Cronos от 03.01.2021, 18:11Цитата: 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Блин, я тупой...
А что если служба состоит из нескольких слов? Почему-то не меняет в ситуации если в кавычки взяты несколько слов.при этом пишет, что поменяло.
Цитата: 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
Блин, я тупой...
А что если служба состоит из нескольких слов? Почему-то не меняет в ситуации если в кавычки взяты несколько слов.
при этом пишет, что поменяло.
Цитата: Cronos от 03.01.2021, 18:17А всё, я уже прочитал мануал по функции. Щас проверю. Должно работать.
А всё, я уже прочитал мануал по функции. Щас проверю. Должно работать.
Цитата: Cronos от 03.01.2021, 18:53Мдаа, просто "замечательно" всё устроено.
В общем, если имя состоит из нескольких слов, то при выполнении команды почему-то берётся только первое и создаётся раздел реестра с таким именем.
Пробовал кавычки туда-сюда ставить, а толку никакого. Проще говоря, если имеем
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 Svc" ^| find /i "Consent UxUser Svc"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)
То в реестр прилетит раздел с именем Consent, а не СкопированоConsent UxUser Svc как должно бы было быть по-идее.
Цитата: 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)
Я так понимаю выделенное это тоже ветка?
Скопировано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)
Цитата: Cronos от 03.01.2021, 19:05Цитата: 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
Цитата: 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
Цитата: Cronos от 03.01.2021, 19:56Всё. Решил задачу.
Оказалось проблема в команде 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)
Всё. Решил задачу.
Оказалось проблема в команде 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)
Цитата: Cronos от 03.04.2021, 10:57Всем добрый день.
Вопрос чисто академический. Не могу понять в чём дело.
Когда-то я решил проблему с редактированием служб в реестре через bat файл и переходом в безопасный режим, чтобы ничего не мешало. Вся эта схема прекрасно работала, но винда обновилась до последней версии и теперь батник при запуске выдаёт Access denied.Я полез смотреть что там такое может быть и, честно говоря, ничего не понял. Сравниваю две службы. Одну я могу редактировать, а другую нет. Разрешения одинаковые у них. То есть владельцем является группа Администраторы и им дан полный доступ. В чём беда не пойму. Какой-то новый способ защиты? Но в чём тогда заключается.. очень странно.
Сразу оговорюсь, что я могу поправить значения через внешний редактор и Live образ, но принципиально не хочу этого делать:
Во-первых, очень муторно.
Во-вторых, править нужно будет вручную, подключая удалённый реестр, а это уже означает, что не получится использовать скрипт, что рушит саму идею.Хотелось бы понять что защищает реестр.
Есть идеи?
Всем добрый день.
Вопрос чисто академический. Не могу понять в чём дело.
Когда-то я решил проблему с редактированием служб в реестре через bat файл и переходом в безопасный режим, чтобы ничего не мешало. Вся эта схема прекрасно работала, но винда обновилась до последней версии и теперь батник при запуске выдаёт Access denied.
Я полез смотреть что там такое может быть и, честно говоря, ничего не понял. Сравниваю две службы. Одну я могу редактировать, а другую нет. Разрешения одинаковые у них. То есть владельцем является группа Администраторы и им дан полный доступ. В чём беда не пойму. Какой-то новый способ защиты? Но в чём тогда заключается.. очень странно.
Сразу оговорюсь, что я могу поправить значения через внешний редактор и Live образ, но принципиально не хочу этого делать:
Во-первых, очень муторно.
Во-вторых, править нужно будет вручную, подключая удалённый реестр, а это уже означает, что не получится использовать скрипт, что рушит саму идею.
Хотелось бы понять что защищает реестр.
Есть идеи?
Цитата: Сергей от 03.04.2021, 11:03Добрый 🖐
Попробуй ещё раз в командной строке от Администратора:net user Admin /active:yes, где Admin – имя Твоей учётки.
Добрый 🖐
Попробуй ещё раз в командной строке от Администратора: Скопированоnet user Admin /active:yes, где Admin – имя Твоей учётки.
Цитата: Cronos от 03.04.2021, 11:15Цитата: Сергей от 03.04.2021, 11:03Добрый
Попробуй ещё раз в командной строке от Администратора:net user Admin /active:yes, где Admin – имя Твоей учётки.Приветствую, Сергей.
Не помогает. Я проверил так же нахождение учётки в нужной группе. Всё правильно. Учётная запись Administrator состоит в группе Administrators. В начале я думал, что это может быть какой-нибудь защитный модуль антивируса, но в безопасном режиме антивирусы не грузятся... И тут я решил это проверить ручками.
какого же было моё удивление, когда я увидел, что антивирус научился прописывать себя в загрузку безопасного режима... Сижу немножко в шоке. Раньше он такого не умел. Ну, теперь понятно куда копать.
Цитата: Сергей от 03.04.2021, 11:03Добрый
Попробуй ещё раз в командной строке от Администратора:Скопированоnet user Admin /active:yes, где Admin – имя Твоей учётки.
Приветствую, Сергей.
Не помогает. Я проверил так же нахождение учётки в нужной группе. Всё правильно. Учётная запись Administrator состоит в группе Administrators. В начале я думал, что это может быть какой-нибудь защитный модуль антивируса, но в безопасном режиме антивирусы не грузятся... И тут я решил это проверить ручками.
какого же было моё удивление, когда я увидел, что антивирус научился прописывать себя в загрузку безопасного режима... Сижу немножко в шоке. Раньше он такого не умел. Ну, теперь понятно куда копать.