通过 Powershell 从 Windows 注册表项中删除 ACL

通过 Powershell 从 Windows 注册表项中删除 ACL

我正在尝试创建一个启动脚本,该脚本可以通过 GPO 分发到笔记本电脑(运行 64 位 Windows 7 Professional),以使任何用户(包括本地管理员)都无法显示连接的无线网络的密码。我基本上已经完成了这项工作,但无法弄清楚如何从密钥上的安全条目中删除用户/组。

这是我目前所拥有的,它基本上定义了变量并将密钥的所有权更改为本地“管理员”组。

$hkey = "HKEY_CLASSES_ROOT\AppID\{86F80216-5DD6-4F43-953B-35EF40A35AEE}"
$exe = "\\server\share\SetACL.exe"
& $exe -on $hkey -ot reg -actn setowner -ownr n:'Administrators'

该脚本的最终结果应该从安全条目中删除“BUILTIN\Administrators”、“BUILTIN\Users”、“SERVICE\TrustedInstaller”,仅留下“BUILTIN\SYSTEM”并读取权限,然后从 SYSTEM 中撤出权限并将其授予 BUILTIN\Administrators。此配置已经过测试并且有效。

为了使用 get-acl,您必须将 ps 驱动器映射到 hkcr 配置单元(因为它是一个指向 {hklm,hkcu}\SOFTWARE\Classes? 的别名),因此我有这个,如果甚至需要 get-acl 来删除权限:

New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$dkey = "HKCR:\AppID\{86F80216-5DD6-4F43-953B-35EF40A35AEE}"
$acl = get-acl $dkey

我在互联网上找到了很多关于添加拒绝权限的信息,但我不想添加拒绝,我只想删除条目,就像通过属性>安全单击“删除”一样。

谢谢!

答案1

以下是从注册表项中删除特定用户的示例代码

$acl = Get-Acl -Path HKLM:\SOFTWARE\Rajiv

$AccessRule = New-Object System.Security.AccessControl.RegistryAccessRule ("MYPC\TEST", "FullControl", "Allow")    

$acl.RemoveAccessRuleAll($AccessRule)

$acl | Set-Acl -Path HKLM:\SOFTWARE\Rajiv

上述代码将用户user 从Key"MYPC\TEST"的权限集合中移除HKLM:\SOFTWARE\Rajiv

使用 Powershell 管理文件系统 ACL

相关内容