我需要将 HKCU 键和值添加到特定 OU 中的所有计算机、所有现有用户配置文件和默认配置文件。解决这个问题的最佳方法是什么?
我可以枚举并遍历所有 NTUSER.DAT,加载配置单元,添加密钥,然后卸载配置单元,但这似乎是一种笨拙的方法。
有人有更好的主意吗?我想编写脚本(最好是 PowerShell)并尽可能推送更改,但组策略登录脚本也可以。
我需要将 HKCU 键和值添加到特定 OU 中的所有计算机、所有现有用户配置文件和默认配置文件。解决这个问题的最佳方法是什么?
我可以枚举并遍历所有 NTUSER.DAT,加载配置单元,添加密钥,然后卸载配置单元,但这似乎是一种笨拙的方法。
有人有更好的主意吗?我想编写脚本(最好是 PowerShell)并尽可能推送更改,但组策略登录脚本也可以。
我的首选方法是使用 Active Setup。它的作用是检查用户登录到机器时是否运行了特定的脚本或命令(例如您将拥有的),如果没有,则执行它。因此,您只会在用户的工作站上为用户运行一次特定脚本。我发现这非常适合写给 HKCU,因为您不必加载每个配置单元,只需修改人们登录的帐户。
不是为了自我推销,但我确实写了一篇关于这样做的博客文章。基本解决方案如下:
添加以下注册表项:
Version
是您要使用的任何版本号。Stubpath
是将要执行的命令。MSI、EXE 和 VBS 调用似乎都很好。@
是命令运行时应该显示的内容。有了这个解决方案,脚本语言就无关紧要了。你可以做一个 VBScript、Powershell、批处理文件。无论您如何以登录用户的身份向 HKCU 写入数据。
reg.exe
直接使用也可以。您可以进行的另一个可选的最终操作是加载和修改默认用户 Hive。这将为首次登录该特定系统的任何新用户设置注册表值。
您可以通过创建自定义 adm 文件并将其作为模板导入组策略对象的管理模板部分来添加自定义 reg 键。然后将该 GPO 链接到您的 OU。MS 上有关于如何执行此操作的文档,或者您可以查看服务器上已经存在的 adm 文件(我认为在 Sysvol 下的某个位置)。
这个过程被称为“纹身注册表”,这意味着您不在组策略删除的控制范围内,即即使策略被删除,注册表条目仍将保留。您需要创建一个“反向”注册密钥并部署它(或只是删除它)。