繁体   English   中英

是否可以将ACL从一个注册表项复制到PowerShell 2.0中的另一个注册表项

[英]Can I copy an ACL from one registry key to another in PowerShell 2.0

基于Windows PowerShell 2.0管理员袖珍顾问中的示例,我的印象是应该可以将ACL从一个注册表项复制到另一个注册表项。 像这样

$ acl = get-acl -path hkcu:\\ software \\ foo
set-acl -path hkcu:\\ software \\ bar -aclobject $ acl

但是我发现这种沉默无法正常工作。 该命令似乎正确完成,但是当您检查hkcu:\\ software \\ bar上的ACL时,您发现它的ACL尚未更改。

如果我要处理文件而不是注册表项,则此模式有效。

如果我做这样的事情

$ acl = get-acl -path hkcu:\\ software \\ bar
$ rule =新对象system.security.accesscontrol.registryaccessrule`“ enigma \\ karmac”,“ FullControl”,“ allow” $ acl.addaccessrule($ rule)$ acl | 设置ACL

那行得通。

因此,基本上,我问的是是否有可能将注册表ACL条目从一个键复制到另一个,或者您是否需要修改每个单独的注册表键的ACL。

我在Windows 7 Ultimate 64位上,以64位模式运行powershell 2.0。 我还尝试过以管理员身份运行Powershell会话。

任何帮助,将不胜感激。 谢谢。

注册表ACL似乎已优化为仅在ACL中检测到更改时才持久存在。 简而言之,如果要将ACL从一个密钥复制到另一个密钥,则必须对ACL列表进行更改(任何更改),然后才能将其应用于新密钥:

$acl = get-acl -path hkcu:\software\foo
$r = $acl.GetAccessRules( $true, $true, [security.principal.ntaccount] )
$acl.RemoveAccessRuleAll( $r[0] )
$acl.AddAccessRule( $r[0] )
set-acl -path hkcu:\software\bar -aclobject $acl

此限制与PowerShell无关,我也在C#中也遇到过。 它是.NET框架中的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM