在域环境中,并不总是可以使用组策略 (GPO) 来管理某些 Windows 或应用程序的设置。事实上,您只能通过系统注册表应用某些设置。在 Active Directory 域中,您可以通过 GPO 集中管理域计算机上的注册表项。在本文中,我们将向您展示如何使用组策略跨域管理、添加、修改、导入和删除注册表项。
[ez-toc]Windows Server 2008 引入了一个特殊的组策略扩展(组策略首选项 — GPP)。它允许您通过组策略管理注册表项和参数。 GPP 允许您在加入域的计算机上添加、删除或修改注册表参数、值和密钥。让我们回顾一下这些可能性。
以前,要管理域计算机上的注册表设置,域管理员必须创建自己的管理 GPO 模板 (.adm/.admx) 或 .bat 登录脚本。此外,经常使用保存的 *.reg 文件,必须使用 reg import 或 Regedit.exe /s import.reg 命令将其导入到用户的计算机中。
如何通过 GPO 添加/设置注册表项?假设我们需要禁用特定 OU 中的域计算机上的自动驱动程序更新。我们必须修改注册表项HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionDriverSearching中的SearchOrderConfig参数。
注册表设置可在计算机和用户配置 GPO 部分中找到。请注意,根据注册表配置单元 (HKEY_LOCAL_MACHINE / HKEY_CURRENT_USER),您必须分别通过计算机或用户配置 GPP 应用设置。
可以通过三个选项来选择目标 PC 上的注册表项:
注册表向导 — 允许您使用本地远程计算机作为内置 GPP 注册表浏览器的参考;
集合项目 — 在文件夹中创建和组织注册表项目。如果您需要添加一组注册表项,则很有用;
注册表项 — 允许您手动更改单个注册表项、参数名称或值。
让我们尝试使用GPO注册表向导来设置注册表参数值:
打开组策略管理控制台(gpmc.msc);
创建新的(或编辑现有的)GPO,并将其链接到适当的 Active Directory OU。之后,切换到GPO编辑模式;
展开以下 GPO 部分:计算机(或用户)配置 > 首选项 > Windows 设置 > 注册表。在上下文菜单中选择:新建 > 注册表向导;
注册表向导允许您浏览本地计算机上的注册表。您可以连接到远程计算机上的注册表,并选择现有的注册表项和参数;
指定要连接的远程计算机名称(或 IP 地址)。使用注册表浏览器树查找并选择现有的注册表项/参数;
在此示例中,我们只想向 GPP 添加一项注册表项 — 名为 SearchOrderConfig 的 REG_DWORD 参数;
该参数以及完整的注册表路径和值将被导入到 GPO 编辑器控制台中。您可以更改其值和所需的操作。要设置特定的注册表参数值,请使用“更新”选项(如下所示);
这样就完成了注册表策略的设置。下次在计算机上更新组策略时(或运行 gpupdate 命令后),指定的注册表设置将应用于 OU 中的所有计算机。
您还可以手动键入完整的注册表项路径和参数名称:
选择新建 > 注册表项;
在以下字段(Hive、Key path、Value type、Value data)中,您必须指定注册表配置单元(HKLM、HKCU 等);注册表项;参数名称、类型和值;
重要的。您可以使用以下 Hive 名称:HKEY_CLASSES_ROOT (HKEY_LOCAL_MACHINESoftwareClasses)、HKEY_CURRENT_CONFIG (HKEY_LOCAL_MACHINESystemCurrentControlSetHardware ProfilesCurrent)、HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER (HKEY_USERS.Default 将使用如果您设置 HKCU 注册表项使用计算机配置策略); HKEY_USERS — 影响单个用户配置文件。
默认情况下,将策略选项设置为更新模式。
对注册表项的操作有4种类型:
创建 — 创建注册表参数。如果参数已经存在,则值不变;
更新(默认)— 如果参数已存在,则其值将使用 GPP 中指定的值进行更新。如果没有,将创建具有指定值的参数;
替换 — 如果注册表项已存在,则删除并重新创建注册表项(很少使用)。如果注册表项或值不存在,将创建一个新的注册表项。如果目标项是注册表项,则此选项将删除所有参数和子项,只留下默认值名称,没有数据。如果目标项是注册表值,则替换操作将覆盖任何现有设置;
删除 — 删除注册表项及其所有值和子项。
常用选项卡上有许多有用的选项:
在登录用户的安全上下文中运行 – 注册表参数是在当前用户的上下文中创建的。如果选中此选项,将使用当前用户权限创建参数。如果用户没有本地管理员权限,则该策略将仅应用于 HKEY_CURRENT_USER 配置单元。但不是HKEY_LOCAL_MACHINE;
当不再应用此项目时将其删除 – 如果取消 GPO 与 AD 容器的链接,更改的注册表设置将返回到其初始状态;
申请一次,不再重复申请 – 每台计算机仅应用一次策略;
项目级定位 — 可用于根据计算机设置和/或精细级别的 AD 组成员身份通过 GPP 定位注册表设置。
GPMC 控制台中包含策略设置的最终报告如下所示:
在Windows XP 和Windows Server 2003 中,GPP 部分不存在。要将其添加到操作系统,您必须安装 KB943729 更新(组策略的客户端扩展)。
如何使用组策略首选项删除注册表项?您还可以使用 GP 首选项删除域中计算机上的特定项或注册表项。
例如,您要删除注册表项 HKEY_CURRENT_USER 中的某个参数。
在“用户配置”>“首选项”>“Windows 设置”>“注册表”部分中创建一个新的注册表 GPP 条目;
使用注册表浏览器选择参数或键;
展开 GPO 控制台中的注册表项。打开参数属性,将Action改为Delete;
保存更改;
现在,在更新客户端上的组策略设置后,指定的参数将从用户的注册表配置单元中删除。
如果使用“注册表浏览”查看远程计算机的注册表时收到“未找到网络路径”错误,请检查是否可以通过网络访问指定的计算机。另外,检查远程注册表服务是否正在运行(该服务默认处于禁用状态)。如果没有,请使用服务控制台 (services.msc) 启动该服务。
或者您可以使用以下 PowerShell 命令远程检查服务状态并启用它:
$remoteservice=get-service RemoteRegistry -ComputerName PC2212ba $remoteservice| Set-Service -StartupType Manual $remoteservice| start-service
如何使用 GPO 在域计算机上部署 Reg 文件?让我们考虑另一种场景,当您需要将包含大量注册表设置的 reg 文件部署到域中的所有计算机时,可以使用该场景。您可以通过 GPO 启动脚本导入包含设置的 reg 文件,而不是在 GPP 编辑器中手动创建单独的注册表设置。
将参考计算机上的注册表项内容导出到 reg 文件。为此,请启动注册表编辑器 (regedit.exe),右键单击注册表项,然后选择导出。指定要保存注册表项内容的文件名;
您可以使用任何文本编辑器打开此 reg 文件并手动编辑它。删除空注册表项,编辑参数值(如有必要),并添加新项或参数;
启动组策略管理控制台,创建一个新的 GPO 并将其链接到具有计算机的 OU(如果要应用 HKLM 注册表配置单元中的参数);
转到以下 GPO 部分:计算机配置 > Windows 设置 > 脚本 > 登录;
单击添加按钮添加新的启动脚本。
在下一个窗口中,单击“浏览”按钮并将 reg 文件复制到此目录 (\domain-nameSysvoldomain-namePolicies…);
指定登录脚本的以下参数:
Script Name: regedit.exe Script Parameters: /s your_reg_file.reg
保存对策略的更改;
重新启动后,您的 reg 文件中的注册表设置将应用于指定 OU 中的所有计算机。
通过组策略分配注册表项权限此外,您还可以使用 Windows 组策略向注册表项分配权限 (ACL)。当您授予用户对受系统保护的注册表项的权限或想要阻止非管理员用户更改某些注册表项时,此功能可能很有用。
创建新的 GPO 或编辑现有的 GPO;
展开以下组策略部分:计算机配置 > Windows 设置 > 安全设置 > 注册表;
在右侧窗格中右键单击并选择添加密钥;
使用内置注册表浏览器选择要为其分配 ACL 的本地注册表项。如果要为当前计算机上缺少的注册表项设置权限,则需要安装 GPMC 管理单元并从具有该注册表项的计算机上编辑 GPO;
将打开 的数据库安全性对话框。您可以在此处更改此注册表项的 ACL。在我们的示例中,我们向 caWKSPowerUsers Active Directory 组的 Chrome 注册表项授予了完全控制(读取 + 写入 + 更改)权限。默认情况下,此 ACL 不会继承到嵌套子项。如果要启用权限继承,请点击高级 > 启用继承按钮;
单击“确定”保存更改。您将看到“模板安全策略设置”对话框窗口。在这里,您可以强制将 ACL 应用于目标项的所有子项(将可继承权限传播到所有子项),或强制新 ACL 仅应用于从目标项继承的子项(用可继承权限替换所有子项上的现有权限)。或者,您可以启用“不允许替换此密钥的权限”选项以防止编辑此注册表项上的 ACL;
关闭 GPO 编辑器窗口。下次重新启动目标客户端计算机时将应用注册表权限。