无忧启动论坛

标题: 修改注册表权限的好工具:SetACL,及简单示例 [打印本页]

作者: 2013_top398    时间: 2014-2-16 13:55
标题: 修改注册表权限的好工具:SetACL,及简单示例
本帖最后由 2013_top398 于 2014-3-15 10:17 编辑

按论坛教程尝试手工制作Win7PE时,一个主要的麻烦就是注册表权限,弄了好几次才设置好。避免这种麻烦的办法,可以转到PE下操作。但我还知道有命令行工具可以设置注册表权限。

于是找到了这个SetACL,其参数比较复杂,帮助也全是英文。经过反复试验,最后搭配出完全修改注册表权限的参数。示例批处理如下:

  1. @echo off
  2. set rootkey="HKLM\pe-soft"
  3. set user=Administrator

  4. setacl -on %rootkey% -ot reg -actn setowner -ownr "n:%user%" -rec yes -silent
  5. if not errorlevel 1 echo OK: Set Owner

  6. setacl -on %rootkey% -ot reg -actn ace -ace "n:%user%;p:full;m:grant;i:so,sc" -op DACL:p_c -rec yes -silent
  7. if not errorlevel 1 echo OK: Set Privilege

  8. set rootkey=
  9. set user=
复制代码

(2014-3-15 修改代码,①rootkey 赋值加引号,这样当键名含有空格时也能正确处理。②添加user变量,集中修改并减少修改的地方。
(2014-2-28 修改上述示例代码中的错误,以免贻笑大方。原语句
    if errorlevel 0 echo OK: Set Owner
    在任何情况下判断都为真。共改正2处)
说明:该批处理先修改 HKLM\pe-soft 及其子键的所有者为 Administrator,再设置 Administrator 拥有此键及其子键的完全权限。

具体应用时,根据自己的需要替换键名和所有者。

附件含32位/64位可执行文件、英文帮助和这个示例。当然SetACL的用处远不止修改注册表权限,只量我一时也用不了其它功能。

SetACL_3060.rar (372.51 KB, 下载次数: 406)        
作者: 20121223445667    时间: 2014-2-16 16:29
谢谢分享!就卡在这步了

作者: 2013Varg    时间: 2014-2-16 16:44
不错,谢谢

作者: mfkwgij    时间: 2014-2-16 18:02
真的很好的了 支持了!~
作者: hero8000    时间: 2014-2-17 10:00
谢谢提供这么好的工具
作者: 2011angelfish    时间: 2014-2-19 10:55
这个应该不错。。。。WIN7可用吧
作者: 2013_top398    时间: 2014-2-19 13:35
2011angelfish 发表于 2014-2-19 10:55
这个应该不错。。。。WIN7可用吧

我就是在WIN7下制作WIN7PE的
作者: ChinToy    时间: 2014-2-22 14:29
谢谢提供这么好的工具
作者: notepad    时间: 2014-2-27 13:23
SetACL非常好用,我在Win8.1下面用过。
作者: tt911    时间: 2014-2-28 09:32
我用的是这个
作者: 2013_top398    时间: 2014-2-28 12:19
又被顶起来了,特改正示例代码中的错误。其实早就发现了,不好意思。
作者: kidzgy    时间: 2014-3-14 17:23
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{b3690e58-e961-423b-b687-386ebfd83239}

还是不行.对上述的注册表值便是无效.第一个命令有效.第二个命令则无效.
在这个注册表值里,依然无权限,比如修改值或新建文件夹.
作者: 2013_top398    时间: 2014-3-14 19:22
按你说的子键改了批处理如下:
  1. @echo off
  2. ::reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{b3690e58-e961-423b-b687-386ebfd83239}

  3. set rootkey=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{b3690e58-e961-423b-b687-386ebfd83239}
  4. setacl -on %rootkey% -ot reg -actn setowner -ownr "n:Administrator" -rec yes -silent
  5. if not errorlevel 1 echo OK: Set Owner

  6. setacl -on %rootkey% -ot reg -actn ace -ace "n:Administrator;p:full;m:grant;i:so,sc" -op DACL:p_c -rec yes -silent
  7. if not errorlevel 1 echo OK: Set Privilege

  8. set rootkey=
复制代码


在Win7 64位下测试,子键和其所有子键确已由 Administrator 所有并取得了完全控制。这里需要注意的是,如果是64位系统下运行32位版本的 SetACL,则可能会出现某些键无法更改权限的问题。
作者: kidzgy    时间: 2014-3-15 01:38
2013_top398 发表于 2014-3-14 19:22
按你说的子键改了批处理如下:

貌似没有什么改动吧,就是把rootkey的变量改成了另外个注册表值.不过唯一的区别便是HKEY_LOCAL_MACHINE缩写为HKLM了

我是在32位Windows7系统下测试的,用的也是32位的setacl.之前我是帮人刚刚装好系统时顺便测试的.现在电脑还给人家又没测试环境了.

而我自己的电脑,之前是手动过设置权限的,现在不管怎么设置回去都无法回到Windows7刚刚装好系统时的原生状态.所以现在用这批处理去测试的话,是100%成功的.

测试有没有成功的话,是在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{b3690e58-e961-423b-b687-386ebfd83239}下新建项,而且是之前从来没手动改动过这个注册表的权限.

作者: 2013_top398    时间: 2014-3-15 09:00
本帖最后由 2013_top398 于 2014-3-15 09:01 编辑
kidzgy 发表于 2014-3-15 01:38
貌似没有什么改动吧,就是把rootkey的变量改成了另外个注册表值.不过唯一的区别便是HKEY_LOCAL_MACHINE缩 ...


1、当然只需要改一下键值,其他参数都是一样的。
2、你回复说你的电脑已手动设置过,用这批处理测试100%成功,但你上面却说运行第一条命令有效,第二条命令无效,why?
3、对于已经手动设置过的键,再用SetACL没有意义,你可以找一个未设置过的键来测试。
作者: 2013_top398    时间: 2014-3-15 09:06
再补充一下,你说的这个键值我自己现用系统从未改过,你不说我都不会注意到这个键,我也是没有必要改的对吧?昨天设置 Administrator 完全权限后,刚才又顺手给其下的 Modifiers 建了个 abcd 子键,成功。
作者: 2013_top398    时间: 2014-3-15 09:28
为了说服你,我再改了一下批处理:
  1. @echo off
  2. set rootkey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{b3690e58-e961-423b-b687-386ebfd83239}"
  3. set user=Administrator

  4. setacl -on %rootkey% -ot reg -actn setowner -ownr "n:%user%" -rec yes -silent
  5. if not errorlevel 1 echo OK: Set Owner

  6. ::setacl -on %rootkey% -ot reg -actn ace -ace "n:%user%;p:full;m:grant;i:so,sc" -op DACL:p_c -rec yes -silent
  7. setacl -on %rootkey% -ot reg -actn ace -ace "n:%user%;p:read;m:set;i:so,sc" -op DACL:p_c -rec yes -silent
  8. if not errorlevel 1 echo OK: Set Privilege

  9. set rootkey=
复制代码

请注意,现在是设置 Administrator 只有读权限。
运行后设置成功,再给其子键 Modifiers 下面添加子键,报错。

实际上,我在前段时间制作 WIM 内存系统时,反复运用 SetACL 对新装系统处理,这是有实践验证的。请你多作测试。
作者: kidzgy    时间: 2014-3-15 14:05
2013_top398 发表于 2014-3-15 09:00
1、当然只需要改一下键值,其他参数都是一样的。
2、你回复说你的电脑已手动设置过,用这批处理测试10 ...

第2个问题..
昨天是我机缘巧合,朋友的机子拿给我重装,刚刚重装好我试下批处理,第一条命令有效,第二条无效.

然而我自己的电脑,是以前就手动设置过权限,所以现在测试是100%有效.反正我的经验是这样.

谢谢楼主的耐心解答!!!有机会我会多作测试,如果不行再来反馈

作者: 2013_top398    时间: 2014-3-15 21:04
kidzgy 发表于 2014-3-15 14:05
第2个问题..
昨天是我机缘巧合,朋友的机子拿给我重装,刚刚重装好我试下批处理,第一条命令有效,第二条无 ...

好的。我相信这个软件没问题的。只是具体应用环境可能比较复杂,需要正确判断问题出在哪里。
作者: 王乐2518    时间: 2019-12-12 17:59
谢谢分享
作者: 2010hook    时间: 2020-6-27 10:16
本帖最后由 2010hook 于 2020-6-27 10:18 编辑

这个不能修改系统预置的权限,鸡肋。
微软有更好的命令工具。
作者: wy843082708    时间: 2020-7-8 16:39
看下能不能用
作者: heimahack    时间: 2021-4-24 12:00
这个程序怎么不能下载?
作者: heimahack    时间: 2021-4-24 12:01
什么样的才可以下载了
作者: lengsenlin    时间: 2022-11-26 15:34
终于找到了,感谢




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3