![]() |
Сменить владельца ключа реестра (subinacl)
Пытаюсь реализовать задачу по добавлению некоторых пунктов в меню элемента Windows 10 "Этот компьютер".
1. Хочу сменить владельца на ветку реестра "HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell". 2. Дать полный доступ группе "Администраторы" на эту же ветку. 3. Внести нужные изменения. 4. Вернуть значения доступа ветки реестра и владельца в исходное состояние. Вот на первом пункте возникла накладка... При выполнении команды в cmd (запущенной от имени "Администратора": Код:
subinacl /keyreg "HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell" /setowner=Администраторы /grant=Администраторы=f Почему не срабатывает данная команда я не понял. :dont-know :durak: |
Anton04, а если двумя командами, сначала /setowner, затем /grant.
|
Petya V4sechkin,
Попробовал, ничего не поменялось. Результат выполнения команд во вложении. |
|
Цитата:
Цитата:
|
Anton04, а система у вас 64-битная?
Интересно, работает ли subinacl корректно в 64-битной системе. |
Цитата:
Скрытый текст
![]() |
Iska, а почему выдаёт NAME NOT FOUND?
Anton04, поскольку 64-битной версии subinacl нет, можете использовать другую утилиту, например SetACL.exe. |
Цитата:
Цитата:
Тогда вопрос, а что в данном случае рекомендует использовать MS в командной строке? Или у MS ответ один - PowerShell ? |
Цитата:
Потому, что в перенаправленном …\Wow6432Node\… нет такого раздела. Для x64 приложений указанный раздел напрямую (без рефлексии на Wow6432Node) виден и доступен. (На всякий случай, по скриншоту — я для экспериментов специально создавал раздел с GUID, отличающимся от существующего последней буквой, «e» вместо «d»; с ним и игрался) И как я понимаю, извне это перенаправление обращений в реестр для x86-приложений под x64 ОС никак не отключить. Цитата:
Цитата:
|
Цитата:
Цитата:
Просто исходный раздел есть и в Wow6432Node тоже. |
Цитата:
Цитата:
P.S. Спасибо, буду смотреть в сторону утилиты SetACL, может мне и подойдёт. Цитата:
|
Anton04, для файловой системы перенаправление касается только папки %windir%\System32:
File System Redirector |
Цитата:
Там, конечно, уже чёрт голову сломит со всеми этими слияниями виртуальных разделов (HKCR) из частей отдельных кустов, динамических разделов, перекрестными символическими ссылками, перенаправлениями и рефлексиями… Сам, зачастую, начинаешь путаться. |
Цитата:
Я полагал, что это ясно из контекста. Ладно, проехали :) |
Цитата:
How to change Registry Permissions with RegIni.exe (VBScript) |
Про subinacl интересно, но задача изначально содержала ненужные условия (пункты 1, 2, 4). Всё проще - от https://www.outsidethebox.ms/10539/#_Toc277326816 и до конца
|
Vadikan,
Хм... то же интересный подход, правда я мыслил шире, т.к. подобных изменений может возникнуть масса в любых частях реестра и изначально не известно на какие ветки реестра даны те или иные разрешения и чтоб каждый раз не проверять обратился именно к процессу смены владельца т.п. Как правильно сказано не всегда учётная запись "Система" или "TrustedInstaller" имеет полный доступ к тем или иным веткам реестра. Это к тому, что за ранее не известно какие разрешения MS вдруг поменяет, а в теории данные команды должны срабатывать в 99 % случаев. Не много не понятно будет ли работать такая вот команда: psexec -i -s regedit /s "c:\test.reg" или tshell.exe regedit /s "c:\test.reg" P.S. Благодарю за идею. :hi: |
Anton04, в вашем варианте чтобы вернуть разрешения назад, все равно нужно знать, кто был владельцем. В принципе, такие операции нужны крайне редко, поэтому какие-то супер-универсальные решения не нужны.
|
Цитата:
Будем тестить, то что есть psexec и Trusted Shell. P.S. Очень жаль, что у MS нету решения из коробки по поводу внесения изменений в реестр от имени системы или TrustedInstaller (powershell я не беру во внимание, хоть и знаю что он хорош). |
Время: 17:23. |
Время: 17:23.
© OSzone.net 2001-