Board logo

标题: [注册表类] 用SetACL修改注册表项权限,结果是增加了一项,老师看看还缺少哪些参数?谢谢! [打印本页]

作者: Shuye    时间: 2023-3-8 03:45     标题: 用SetACL修改注册表项权限,结果是增加了一项,老师看看还缺少哪些参数?谢谢!

本帖最后由 Shuye 于 2023-3-12 18:37 编辑


追加提问:

如果只想更改 Administrators 的“继承”和“权限‘,其他主体的“继承”都不改动,

参数该怎么设置?之后又怎么恢复?



====================================================
以下是原来的问题,感谢 buyiyang 兄给出了”修改“及”恢复“的代码!(见6楼、9楼)


注册表子项:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{031E4825-7B94-4dc3-B131-E946B44C8DD5}\ShellFolder

主体中原本已有一项 Administrators “读取”



试图将其改为“完全控制”:

Set ff=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{031E4825-7B94-4dc3-B131-E946B44C8DD5}\ShellFolder
Start /wait /b CMD /c SetACL -on "%ff%" -ot reg -actn setowner -ownr "n:Administrators"
Start /wait /b CMD /c SetACL -on "%ff%" -ot reg -actn ace -ace "n:Administrators;p:full"




结果不是修改原来“读取”的那项,而是增加了一项 Administrators “完全控制”,

老师看看错在哪?还缺少哪些参数?

谢谢!

作者: buyiyang    时间: 2023-3-8 12:00

第三条尝试改为
  1. Start /wait /b CMD /c SetACL -on "%ff%" -ot reg -actn mod -ace "n:Administrators;p:full"
复制代码

作者: Shuye    时间: 2023-3-9 00:48

回复 2# buyiyang

谢谢 buyiyang 兄!不过,没通过,报错:

ERROR in command line: Invalid action specified: mod!

命令行错误:指定的操作无效:mod!

作者: holley    时间: 2023-3-9 08:55

本帖最后由 holley 于 2023-3-9 08:57 编辑

回复 1# Shuye
是不是还要配置 继承属性?
  1. Inheritance flags for the ACE. This may be a comma-separated list containing the following:
  2. so
  3. sub-objects
  4. sc
  5. sub-containers
  6. np
  7. no propagation
  8. io
  9. inherit only
  10. Example: ‘io,so’
复制代码
试试:
  1. Start /wait /b CMD /c SetACL -on "%ff%" -ot reg -actn ace -ace "n:Administrators;p:full;m:grant;i:so,sc"
复制代码

作者: Shuye    时间: 2023-3-9 13:37

本帖最后由 Shuye 于 2023-3-9 13:39 编辑

回复 4# holley

谢谢 holley 兄!

不过,没达到效果。

原来“读取”的那项还是没改动,还是增加了一项 Administrators “完全控制”。

作者: buyiyang    时间: 2023-3-9 17:47

本帖最后由 buyiyang 于 2023-3-9 18:12 编辑

因为administrators的权限是继承而来的,所以无法更改,要先将权限改为显式权限然后才能更改
  1. SetACL -on "%ff%" -ot reg -actn setprot -op "dacl:p_c;sacl:p_c" -actn ace -ace "n:Administrators;p:full;m:set;i:so,sc"
复制代码
说明如下:
  1. Protection
  2. Controls the flag ‘allow inheritable permissions from the parent object to propagate to this object’:
  3. nc
  4. Do not change the current setting.
  5. np
  6. Object is not protected, i.e. inherits from parent.
  7. p_c
  8. Object is protected, ACEs from parent are copied.
  9. p_nc
  10. Object is protected, ACEs from parent are not copied
复制代码

作者: Shuye    时间: 2023-3-10 00:33

回复 6# buyiyang

好办法,测试成功,谢谢 buyiyang 兄!



作者: Shuye    时间: 2023-3-10 00:37


如果想恢复他们的“继承”,参数该怎么设置?

谢谢!

作者: buyiyang    时间: 2023-3-10 12:35

回复 8# Shuye


    恢复
  1. SetACL -on "%ff%" -ot reg -actn setprot -op "dacl:np;sacl:np" -actn clear -clr "dacl,sacl"
复制代码

作者: Shuye    时间: 2023-3-11 02:58

回复 9# buyiyang

高手,完全复原,再次感谢 buyiyang 兄!

作者: buyiyang    时间: 2023-3-12 22:20

你的新需求应该要先取消父项中Administrators的propagate
  1. SetACL -on "父项" -ot reg -actn setowner -ownr "n:Administrators" -actn ace -ace "n:Administrators;p:read;i:np"
  2. SetACL -on "%ff%" -ot reg -actn ace -ace "n:Administrators;p:full;m:grant;i:so,sc"
复制代码
恢复
  1. SetACL -on "父项" -ot reg -actn ace -ace "n:Administrators;p:read;i:so,sc" -actn rstchldrn -rst "dacl,sacl"
复制代码

作者: Shuye    时间: 2023-3-13 13:58

回复 11# buyiyang

测试通过,谢谢 buyiyang 兄!

作者: Shuye    时间: 2023-3-13 14:13

因为administrators的权限是继承而来的,所以无法更改,要先将权限改为显式权限然后才能更改说明如下:
buyiyang 发表于 2023-3-9 17:47


还有个疑惑:

为什么把子项的“继承”全部改掉时,不需要先取消父项中 Administrators 的 propagate,(见6楼、7楼)



而只改动 Administrators 这一项时却要先取消?


作者: buyiyang    时间: 2023-3-15 11:20

回复 13# Shuye


    因为子项继承的主体无法修改或删除,要么直接禁用子项的从父项继承(取消子项的所有主体的继承关系),要么从父项修改每个主体的propagation
作者: Shuye    时间: 2023-3-16 01:51

回复 14# buyiyang

谢谢 buyiyang 兄!





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2