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

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

Anton04 03-01-2018 02:02 2788679

Сменить владельца ключа реестра (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
получаю результат "...RegSetKeySecurity Error: 5 Отказано в доступе".

Почему не срабатывает данная команда я не понял. :dont-know :durak:

Petya V4sechkin 03-01-2018 09:33 2788696

Anton04, а если двумя командами, сначала /setowner, затем /grant.

Anton04 03-01-2018 14:26 2788720

Petya V4sechkin,

Попробовал, ничего не поменялось. Результат выполнения команд во вложении.

Iska 03-01-2018 14:47 2788726

Цитата:

Цитата Anton04
Попробовал, ничего не поменялось. »

Э… По сравнению с чем «ничего не поменялось»? С этим:
Цитата:

Цитата Anton04
получаю результат "...RegSetKeySecurity Error: 5 Отказано в доступе". »

?! Ибо на скриншоте я вижу, что владелец сменён, права назначены.

Anton04 03-01-2018 15:50 2788741

Цитата:

Цитата Iska
Э… По сравнению с чем «ничего не поменялось»? »

Не поменялся владелец, проверяю визуально в редакторе реестра.

Цитата:

Цитата Iska
Ибо на скриншоте я вижу, что владелец сменён, права назначены. »

Я это тоже вижу, но по факту владелец ветки остался прежним и права тоже. :dont-know

Petya V4sechkin 03-01-2018 16:45 2788745

Anton04, а система у вас 64-битная?
Интересно, работает ли subinacl корректно в 64-битной системе.

Iska 03-01-2018 17:35 2788752

Цитата:

Цитата Petya V4sechkin
Интересно, работает ли subinacl корректно в 64-битной системе. »

Оно самое:
Скрытый текст

Petya V4sechkin 03-01-2018 19:39 2788774

Iska, а почему выдаёт NAME NOT FOUND?

Anton04, поскольку 64-битной версии subinacl нет, можете использовать другую утилиту, например SetACL.exe.

Anton04 03-01-2018 20:00 2788777

Цитата:

Цитата Petya V4sechkin
Интересно, работает ли subinacl корректно в 64-битной системе. »

Например NTFS разрешения на файлы в 64-bit`ной системе subinacl редактирует корректно.

Цитата:

Цитата Petya V4sechkin
поскольку 64-битной версии subinacl нет, можете использовать другую утилиту, например SetACL.exe. »

Об данной утилите я знаю, просто хотелось использовать относительно стандартную утилиту от MS.

Тогда вопрос, а что в данном случае рекомендует использовать MS в командной строке? Или у MS ответ один - PowerShell ?

Iska 03-01-2018 20:09 2788778

Цитата:

Цитата Petya V4sechkin
Iska, а почему выдаёт NAME NOT FOUND? »

Registry Keys Affected by WOW64 (Windows)

Потому, что в перенаправленном …\Wow6432Node\… нет такого раздела. Для x64 приложений указанный раздел напрямую (без рефлексии на Wow6432Node) виден и доступен. (На всякий случай, по скриншоту — я для экспериментов специально создавал раздел с GUID, отличающимся от существующего последней буквой, «e» вместо «d»; с ним и игрался) И как я понимаю, извне это перенаправление обращений в реестр для x86-приложений под x64 ОС никак не отключить.

Цитата:

Цитата Anton04
Например NTFS разрешения на файлы в 64-bit`ной системе subinacl редактирует корректно. »

Вот не думаю.


Цитата:

Цитата Anton04
Тогда вопрос, а что в данном случае рекомендует использовать MS в командной строке? Или у MS ответ один - PowerShell ? »

Уже упомянутый SetACL.exe и, не поверите — старичка Regini.exe.

Petya V4sechkin 03-01-2018 20:19 2788781

Цитата:

Цитата Anton04
Например NTFS разрешения на файлы в 64-bit`ной системе subinacl редактирует корректно.

Сейчас проверил: в папке System32 ничего он не редактирует (потому что система в SysWOW64 перенаправляет). Хотя можно использовать псевдоним SysNative.

Цитата:

Цитата Iska
я для экспериментов специально создавал раздел с GUID, отличающимся от существующего последней буквой, «e» вместо «d»; с ним и игрался

А, разницу в одну букву я не заметил :)
Просто исходный раздел есть и в Wow6432Node тоже.

Anton04 03-01-2018 20:24 2788782

Цитата:

Цитата Iska
Вот не думаю. »

Проверенно ещё на 64-bit`ной Win7, если в Win10 ничего принципиального не поменяли, то и там должно работать.


Цитата:

Цитата Iska
не поверите — старичка Regini.exe. »

Почему не поверю, ещё как поверю! Просто хотелось использовать один инструмент для редактирования разрешения и в NTFS и в реестре.

P.S. Спасибо, буду смотреть в сторону утилиты SetACL, может мне и подойдёт.

Цитата:

Цитата Petya V4sechkin
Сейчас проверил: в папке System32 ничего он не редактирует (потому что система в SysWOW64 перенаправляет). Хотя можно использовать псевдоним SysNative. »

Я делал разрешения для файлов и папок в каталогах "Program Files" и "Program Files (x86)" и там у меня всё срабатывает.

Petya V4sechkin 03-01-2018 21:02 2788787

Anton04, для файловой системы перенаправление касается только папки %windir%\System32:
File System Redirector

Iska 04-01-2018 08:37 2788837

Цитата:

Цитата Petya V4sechkin
Просто исходный раздел есть и в Wow6432Node тоже. »

У меня (под Windows 7 x64), в HKCU — нет, в HKCR — есть (на скриншоте ошибка и там, и там из-за того, что я сам создавал раздел с чуть изменённым именем, как писал выше).

Там, конечно, уже чёрт голову сломит со всеми этими слияниями виртуальных разделов (HKCR) из частей отдельных кустов, динамических разделов, перекрестными символическими ссылками, перенаправлениями и рефлексиями… Сам, зачастую, начинаешь путаться.

Petya V4sechkin 04-01-2018 10:47 2788844

Цитата:

Цитата Iska
в HKCU — нет

Разумеется, ведь изначально речь шла о HKCR и {20D04FE0-3AEA-1069-A2D8-08002B30309D}.
Я полагал, что это ясно из контекста.
Ладно, проехали :)

Казбек 04-01-2018 12:32 2788857

Цитата:

You will have to use REGINI.EXE to set registry permissions and CACLS for files. There is no support for SUBINACL under 64 bit O/S's
Davis McCarn

How to change Registry Permissions with RegIni.exe (VBScript)

Vadikan 10-01-2018 01:30 2790170

Про subinacl интересно, но задача изначально содержала ненужные условия (пункты 1, 2, 4). Всё проще - от https://www.outsidethebox.ms/10539/#_Toc277326816 и до конца

Anton04 10-01-2018 11:07 2790228

Vadikan,

Хм... то же интересный подход, правда я мыслил шире, т.к. подобных изменений может возникнуть масса в любых частях реестра и изначально не известно на какие ветки реестра даны те или иные разрешения и чтоб каждый раз не проверять обратился именно к процессу смены владельца т.п. Как правильно сказано не всегда учётная запись "Система" или "TrustedInstaller" имеет полный доступ к тем или иным веткам реестра.
Это к тому, что за ранее не известно какие разрешения MS вдруг поменяет, а в теории данные команды должны срабатывать в 99 % случаев.

Не много не понятно будет ли работать такая вот команда: psexec -i -s regedit /s "c:\test.reg" или tshell.exe regedit /s "c:\test.reg"

P.S. Благодарю за идею. :hi:

Vadikan 10-01-2018 11:37 2790246

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

Anton04 10-01-2018 14:09 2790313

Цитата:

Цитата Vadikan
в вашем варианте чтобы вернуть разрешения назад, все равно нужно знать, кто был владельцем. »

Ну да, что есть, то есть...
Будем тестить, то что есть psexec и Trusted Shell.

P.S. Очень жаль, что у MS нету решения из коробки по поводу внесения изменений в реестр от имени системы или TrustedInstaller (powershell я не беру во внимание, хоть и знаю что он хорош).


Время: 17:23.

Время: 17:23.
© OSzone.net 2001-