使用命令行获取注册表所有权 | Take Ownership of Registry Key & Assign Permissions Using Command-line

标签: none

我们已经知道如何使用注册表编辑器(regedit.exe)更改注册表项子项的所有权。本文告诉您如何使用命令行更改注册表项的所有权授予权限

Windows 有 takeown.exeicacls.exe 控制台实用程序来 更改文件/文件夹 的所有权和权限,但是没有此类内置工具可使用命令行来更改注册表项的所有权。需要一个名为 SetACL 的第三方工具来执行此任务。

SetACL:命令行参数

在继续之前,让我们看一下使用 SetACL 更改文件/注册表所有权和权限的命令行语法。

SetACL -on objectname -ot objecttype -actn action
-on:指定SetACL应该在其上操作的对象的路径(例如,文件,注册表项,网络共享,服务或打印机)。
-ot:指定对象类型。要更改文件或文件夹的所有权或权限,请使用对象类型 file 。对于注册表项,请使用对象类型 reg
-actn:指定针对SetACL对指定对象应执行的操作。要获得所有权,请将操作设置为 setowner 。要更改权限,请将操作设置为 ace 。

(有关对象,类型和支持的操作的完整列表,请参阅SetACL文档

使用命令行获取注册表项的所有权并分配权限

要使用SetACL更改注册表项的所有权和权限,请执行以下操作:

  1. 下载SetACL,将内容解压缩到一个文件夹中。
  2. 将相应版本的工具 setacl.exe (32位和64位)复制到文件夹中,例如 d:\tools
  3. 假设您要更改注册表分支的所有权 HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160} 并授予该 Administrators 组完全控制权限。从 管理命令提示符 窗口中运行以下两个命令:
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:Administrators"
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn ace -ace "n:Administrators;p:full"

SetACL:更改注册表项的所有权并分配完全权限

Snipaste_2020-03-24_07-47-49.png

第一个命令将 Administrators组 设置为键值的所有者
第二个命令将 Administrators 为密钥组分配 完全控制 权限。

Administrators组 拥有项及其子项,还具有完全控制权限,您可以使用注册表编辑器进行检查。

Snipaste_2020-03-24_07-55-27.png

要点:要更改此键和子键的所有权和权限,请 -rec Yes 在最后添加参数。有关更多信息,请看下图。

更改注册表项权限时出错?

尝试更改您无权访问的文件/文件夹或注册表项的权限时,SetACL报告以下错误。为防止发生此错误,请确保先更改密钥的所有权,然后再更改其许可权。

SetACL finished with error(s):
SetACL error message: The call to SetNamedSecurityInfo () failed
Operating system error message: Access is denied.

递归所有权和分配权限(此键和子键)

Administrators 所有权授予键及其子键完全控制权限, 请在最后添加 -rec Yes, 如下所示:

SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:Administrators" -rec Yes
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn ace -ace "n:Administrators;p:full" -rec Yes

Snipaste_2020-03-24_08-05-50.png

设置 TrustedInstaller 为所有者 owner

若要设置 TrustedInstaller 为注册表项的所有者并递归分配其完全控制权限,请使用相同的命令行语法。您只需要更改 帐户/组名称。这是您这次需要运行的命令:

SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:nt service\trustedinstaller" -rec Yes
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn ace -ace "n:"nt service\trustedinstaller";p:full" -rec Yes

运行上述命令后,将 TrustedInstallerNT SERVICE\TrustedInstaller)设置为键和子键的所有者。

Snipaste_2020-03-24_08-16-51.png

附加信息

  • Microsoft SubInACL:在Windows
    XP时代,Microsoft还发布了另一个名为SubInACL的控制台工具。它是Windows XP /
    2003资源工具包工具的一部分。SubInACL可用于设置文件/文件夹和注册表的所有权和权限。但是,由于SubInACL已被Microsoft终止,并且默认为32位文件和注册表路径(在Windows
    64位系统上),这使得它在某些情况下不能在Windows 64位版本中使用。
  • Microsoft Regini.exe:您还有另一个名为regini.exe的内置控制台工具,该工具可让您使用基于文本的文件来更改注册表权限。但是,regini.exe无法更改注册表项的所有权。有关regini.exe的更多信息,请打开“命令提示符”窗口,然后键入 regini.exe /?
  • Helge Klein SetACL 是广泛推荐的工具,它无疑填补了SubInACL留下的空白,并且还解决了的缺点regini.exe。与本文讨论的内容相比,SetACL可以做的事情更多。

Take Ownership of Registry Key & Assign Permissions Using Command-line
SetACL Download
How to change registry values or permissions from a command line or a script regini.exe


扫描二维码,在手机上阅读!

添加新评论