Показать полную графическую версию : Внесение изменений в реестр всех пользователей ПК
Всем известен способ
sc config SensrSvc start= disabled
однако в windows 10 есть некоторые "защищенные" службы. Которые ни через интерфейс, ни батником не удаляются, Access denied даже при запуске с elevated
Я так понимаю, они являются ветками реестра с правами только какому-то специфическому юзеру, а не админу. Или неправ?
Собственно, вопросы -
1. права на какое именно место должны меняться, на саму ветку службы, на какие-то ключи в ней?
(давать права на весь куст реестра и снижать защиту не хочу)
И как это в батнике провернуть, чтоб не заниматься онанизмом с последовательным прогоном его же от имени разных юзеров?
2. есть ли возможность в батнике указать не всё имя, а часть? Некоторые службы генерятся с рандомным окончанием названия, типа nazvanie sluzby_1234dbr567
-вручную уберешь, а деплойнуть нельзя. на другой машине уже иное имя будет.
зачем это мне - вин10 поставляется с некоторыми предустановленными свистоперделками. Типа того же скайпа. А у нас его нельзя. И игрушки типа того же xbox, и еще кучка ..
что пробовал - совет с https://stackoverflow.com/questions/1894967/how-to-request-administrator-access-inside-a-batch-file
- результат выше, нулевой.
DJ Mogarych
13-03-2020, 20:50
Удалять службы в этой ситуации - богатая идея, типа удаления программ путём стирания их файлов.
В Powershell есть команда Get-AppxPackage, выводящая список встроенных приложений, и Remove-AppxPackage, которая эти программы корректно удаляет.
Подробнее можно почитать в блоге Vadikan-а: http://www.outsidethebox.ms/14267/
bredych, развертывайте образы без ненужных приложений http://www.outsidethebox.ms/19177/#_Toc531106447
NB! Безотносительно изложенного в двух предыдущих сообщениях коллег.
2. есть ли возможность в батнике указать не всё имя, а часть? Некоторые службы генерятся с рандомным окончанием названия »
Насчёт именно пакетного файла — под вопросом, надо знать набор допустимых символов в именах служб (я не искал такой информации). А так — ищется перечень имён служб по маске, затем каждое имя из найденного перечня передаётся потребным командам. Теоретически годится пакетный файл («for /f … %%i in (`wmic.exe Service … Name like 'SensrSvc_%%') do sc.exe config "%%~i" start= disabled»). Гарантированно сгодятся WSH и PowerShell, где сие реализуется ещё проще.
развертывайте образы без ненужных приложений http://www.outsidethebox.ms/19177/#_Toc531106447 »
спасибо, гораздо более интересный путь через PS
А если оно уже развернуто, возможно ли скомбинировать скрипт из ссылки
со скриптом из http://www.outsidethebox.ms/14267/ в плане
вырезать #путь к подключенному образу
$mountpath = "C:\mount"
вместо него добавив -Online в команды
Get-AppxProvisionedPackage -Online | ForEach-Object ...
Get-AppXPackage -Online | ForEach-Object ...
?
И как в уже развернутой вносить изменения в дефолт профиль? Именно, чтоб не повторять процедуры при подключении каждого нового юзера к тому же компу. Ссылки на http://www.oszone.net/6167 я видел, но хотелось бы решить в виде скрипта, чтоб не играться каждый раз с подключением-отключением кустов реестра вручную
И как в уже развернутой вносить изменения в дефолт профиль? »
Да так же — один раз подгрузить куст, содержащий профиль пользователя по умолчанию, «окучить» его, затем выгрузить.
Ссылки на http://www.oszone.net/6167 я видел, но хотелось бы решить в виде скрипта, чтоб не играться каждый раз с подключением-отключением кустов реестра вручную »
Там же есть образец скрипта.
Там же есть образец скрипта. »
блин.. недочитал, подумал, там только переименование путей, чтоб твик корректно импортнулся, а подключать кусты вручную.
И да, почему в примере
Get-AppxProvisionedPackage -Online | Where-Object {$_.DisplayName -CNotLike '*Store*' -and $_.DisplayName -CNotLike '*Calc*' -and $_.DisplayName -CNotLike '*ScreenSketch*'} | Remove-AppxProvisionedPackage -Online
Get-AppXPackage | Where-Object {$_.Name -CNotLike '*Store*' -and $_.Name -CNotLike '*Calc*' -and $_.Name -CNotLike '*ScreenSketch*'} | Remove-AppxPackage в первом случае ключ -online присутствует,а во втором - нет? Или Get-AppXPackage в любом случае относится только к текущему юзеру, но никак не к чему-либо еще?
..и кстати, скрипт вываливается. Даже если создать от админа консоль и в ней запустить, что-то красным пишет, вываливается и закрывает консоль.
логи не пишет, хоть я в конце и добавил вывод писать в лог.
И да, почему в примере в первом случае ключ -online присутствует,а во втором - нет? »
Потому что для первой команды удаляются подготовленные в системной учетной записи пакеты на онлайн системе (запущенной), нежели из некого образа WIM. А вторая команда удаляет пакеты из текущей учетной записи. Это написано в статье http://www.outsidethebox.ms/14267/#_Toc342245006
..и кстати, скрипт вываливается. Даже если создать от админа консоль и в ней запустить, что-то красным пишет, вываливается и закрывает консоль »
Вообще, команды для удаления из образа (скрипт) и живой системы немного разные, вам надо вникнуть в их содержимое. Мне трудно сказать, как вы совместили эти две вещи и что вообще вы пытаетесь делать. Потому что вы об этом не рассказываете внятно :)
Думаю, вам надо внятно и подробно описать задачу, а дальше вам уж как-нибудь скрипт соберут тут...
Вообще, команды для удаления из образа (скрипт) и живой системы немного разные, вам надо вникнуть в их содержимое. »
но там логика вполне очевидная, и вполне согласуется с комментариями.
Единственное, что могло бы затыкать (и, вероятно, затыкает) - это что даже из-под админа ntuser.dat файлы других юзеров при попытке подгрузить не видны.
Это если речь про именно кусок скрипта
:: Извлекаем из реестра полный путь к папке, содержащей профили пользователей
for /f "usebackq tokens=3,3* delims== " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i
:: Полученный путь используем в качестве новой переменной %profiles%
for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i
:: Для всех профилей пользователей (кроме All Users и %Username%) поочередно загружаем пользовательский
:: куст реестра, представляющий собой файл NTUSER.DAT и импортируем в него заранее подготовленный
:: REG-файл, содержащий твики реестра.
For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO (
takeown /F %%i /R /D y
icacls /t /e /c /g admin:f
reg load HKEY_USERS\Custom "%profiles%\%%i\NTUSER.DAT"
reg import forbidApps.reg
reg unload HKEY_USERS\Custom
)
я добавил взятие собственности и назначение себе прав, потому что часть папок юзеров создаются без права доступа мне, и мне приходилось вручную это проделывать. Только как указать, что это доменный юзер, а не локальный, что-то забыл напрочь, и гугл не спасает. В описаниях, напр, этом (https://ab57.ru/cmdlist/icacls.html), понятие нелокального юзера просто отсутствует.
Кусок кода powershell -executionpolicy unrestricted -File RemAppx.ps1 - отрабатывает штатно, выводя на экран список удаляемых компонентов.
Но вон тот, с внесением в реестр запрета на установку их вновь всем последующим подключающимся к компу - что-то не желает. Теперь уже не закрывается, пишет
file not found
The syntax of command is incorrect
апд, еще забыл, удаление плиток в старт меню, мелочь, но неприятно..
я добавил взятие собственности и назначение себе прав, потому что часть папок юзеров создаются без права доступа мне, и мне приходилось вручную это проделывать »
Что вы творите... Пользователям скриптом групповых политик можно все сделать.
Что вы творите... Пользователям скриптом групповых политик можно все сделать.
Во-первых, к групповым доступа не имею, такое вот организационное разделение, там только вышестоящая организация куролесит..
Во-вторых, мне все равно нужен доступ в профили, доки юзера перекинуть..
Зы, кстати, не срабатывает...
Переименовал тему в соответствии со своим пониманием текущей проблемы.
дальнейшие пинания:
1) загрузка с флешки, подгрузка куста профиля default и импорт в него ключей - да, позволяют остальным профилям сразу формироваться нормально.
Из-под админа внести изменения в default не дает, кидается ошибками.
Опять же права на внесение изменений в ветки?
2) получение прав на вновь формируемые профили юзеров
вручную вбивание в комстроке
takeown /f profile /r /d y
и потом
icacls profile /t /c /grant admin:f
- срабатывает, но как-то странно: админу формируется пустой список прав. В смысле, вообще пустой. Ни одной галочки. Хоть ключ вообще-то говорит, что должен формироваться фулл.
В батнике (скриптом из ссылки выше) - чтоб само выбирало локальные профиля и правило - ничего, ноль эффекта.
Упростив до
set profiles="C:\Users"
For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"Administrator" /C:"%username%"`) DO (
takeown /f %%i /f /f y
icacls %%i /t /c /grant admin:f - получаю уже более-менее логичную ошибку, что в текущей папке исполнения батника этих файлов нет.
А как правильно добавить полный путь в цикл? В какой точке?
апд, сейчас прочел - протупил жестко, банальное pushd делает всё нужное
pushd %profiles%
For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"Administrator" /C:"%username%"`) DO (
takeown /f %%i /f /f y
icacls %%i /t /c /grant admin:f
)
popd
Увидев, что не удаляются приложения,
https://sun9-13.userapi.com/c857636/v857636873/1ad6f9/e8XPpw6wwos.jpg
попробовал в одиночку вручную удалить.
поймал глупую ошибку - заявляет, что "удалить невозможно, только через меню отключить"
PS D:\> get-appxpackage *people* |remove-appxpackage
remove-appxpackage : Deployment failed with HRESULT: 0x80073CFA, Removal failed. Please contact your software vendor.
(Exception from HRESULT: 0x80073CFA)
error 0x80070032: AppX Deployment Remove operation on package
Microsoft.Windows.PeopleExperienceHost_10.0.17134.1_neutral_neutral_cw5n1h2txyewy from:
C:\Windows\SystemApps\Microsoft.Windows.PeopleExperienceHost_cw5n1h2txyewy failed. This app is part of Windows and
cannot be uninstalled on a per-user basis. An administrator can attempt to remove the app from the computer using Turn
Windows Features on or off. However, it may not be possible to uninstall the app.
NOTE: For additional information, look for [ActivityId] a5acd978-fe7c-0001-1507-ada57cfed501 in the Event Log or use
the command line Get-AppxLog -ActivityID a5acd978-fe7c-0001-1507-ada57cfed501
At line:1 char:27
+ get-appxpackage *people* |remove-appxpackage
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Windo...l_cw5n1h2txyewy:String) [Remove-AppxPackage], IOException
+ FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand
Но это же маразм..
А если весь магазин удалить, это фекалие убьется?
DJ Mogarych
24-03-2020, 12:44
Гугл рулит.
https://superuser.com/questions/1115801/unable-to-uninstall-universal-apps-through-powershell
спасибо. Но
Microsoft blocks the upgrade to newer Windows builds if inbox apps are removed. So keep this in mind.
наводит уныние, поскольку апдейты обязаны идти по регламенту...
И, кстати, даже так не срабатывает. После прогона скрипта удаляемый компонент соцсети остается.
geepnozeex
10-04-2020, 16:17
bredych, дисмом не пробовал удалять?
Dism/online /Remove-ProvisionedAppxPackage /PackageName:
получить список пакетов
DISM /Online /English /Get-ProvisionedAppxPackages >C:\AppxPackages.txt
наводит уныние, поскольку апдейты обязаны идти по регламенту... »
если вырезаны только UWP, то проблем с накопительными и остальными обновлениями нет.
я всю жизнь все UWP вырезаю и нет проблем.
как могут быть проблемы с обновами, если для LTSC те-же обновы, что и для PRO ?
проблемы с обновлениями будут при удалении скрытых пакетов
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.