将注册表或 ADM 应用于组策略以登录特定服务器

将注册表或 ADM 应用于组策略以登录特定服务器

我有一些运行共享应用程序的 Windows 2008 Server 终端服务服务器。不幸的是,为了正常运行,该应用程序有一些 HKEY_CURRENT_USER 设置,这些设置需要在用户登录时写入每个用户的注册表。这些设置会随时间而变化,所以我不想编辑 C:\Users\Default\NTUser.dat;我希望通过 Active Directory 应用它们。

我已确定了相应的条目,并将它们导出为注册表文件,此外还将它们转换为 ADM。我想配置 Active Directory 组策略的某些部分,以将 .REG 或 ADM 作为登录脚本(适用于所有用户)仅加载到这些服务器(这些服务器位于其自己的 OU 中)。

我该怎么做?我在 OU 中创建了一项策略,但除此之外却一筹莫展;我尝试将 ADM 加载到 GPO 管理编辑器中,但似乎什么也没做……

也许是“主动设置”的某种组合(为所有现有用户和所有新用户添加 HKCU 键和值的最佳方法是什么?)和环回处理(http://support.microsoft.com/kb/231287) 但我对 GPO 的了解非常有限。

答案1

您的意思是,您有用户设置,希望仅在用户登录到特定计算机时才应用这些设置?听起来很难,是吧?其实一点也不难。这听起来像是环回组策略处理的工作!

假设以下情况:

 [Domain] mydomain.com.org.net.local
  |
  |--[OU] Special Computers
  |   |
  |   |-- [Computer] COMPUTER 1
  |   |
  |   |-- [Computer] COMPUTER 2
  |   ...
  |
  |--[OU] User Accounts
      |
      |--[User] Bob
      |
      |--[User] Alice
      ...

您想要应用用户设置(例如运行登录脚本,或应用其他类型的 GPO 用户设置)全部登录到“特殊计算机”OU 中的计算机的用户。但是,当他们登录到位于其他 OU 中的计算机时,您不希望应用这些特殊设置。

创建 GPO 并将其链接到“特殊计算机”OU。在该 GPO 中指定要应用的所有用户相关设置。

(“但是等等,Evan!用户的帐户对象不在‘特殊计算机’OU 中!”是的。我知道。请继续听我说。我遇到的大多数 AD 管理员都不了解环回策略处理,并且会感到害怕。我见过可怕的黑客行为,例如为用户在使用“特殊计算机”时登录创建辅助用户帐户等……> 颤抖<)

在您创建的 GPO 中,进入计算机的“管理模板”、“系统”、“组策略”,找到“用户组策略环回处理模式”设置。启用此设置。在“模式”框中,如果您希望忽略用户的所有“正常”组策略设置,并且只应用此新 GPO 中的用户策略设置,请选择“替换”。如果您希望在应用所有正常用户设置后应用 GPO 中的用户设置,请选择“合并”。

我的看法是,这比登录脚本中涉及“如果计算机==blah”的“黑客”要干净得多。


我的建议是,使用组策略首选项 (GPP) 注册表设置而不是登录脚本来执行您正在执行的操作。它将应用一次,在用户的注册表中保留默认设置,但用户将来可以自由更改设置,而无需在每次登录时“破坏”它们。

如果这些是 Windows Server 2008 机器(如您的标签所示),那么没有理由不使用 GPP 注册表设置。请参阅下面的文章以了解更多详细信息。这是 W2K8 的一个非常好的功能,您应该利用它。

http://www.microsoft.com/downloads/details.aspx?FamilyID=42e30e3f-6f01-4610-9d6e-f6e0fb7a0790&DisplayLang=en

http://blogs.technet.com/grouppolicy/archive/2008/03/04/gp-policy-vs-preference-vs-gp-preferences.aspx

答案2

您需要决定要走哪条路线——ADM 还是 Registry。

您可以通过 GPO 设置自定义注册表设置。编辑 GPO,然后浏览到此部分:

计算机配置--策略--Windows设置--安全设置--注册表

您在此处定义的任何密钥组合都将应用于该 OU 中的机器。

此外,你应该改变范围过滤应用于您感兴趣的 AD 对象的 GPO。它可能默认为已认证用户。如果正确,那就保留它。我怀疑你需要更改它,以便它适用于域计算机。不要担心,它只适用于该 OU 中的域计算机以及所有子 OU

编辑:

编辑以提供如何在 GPO 中批量文件注册表导入和登录脚本。

因此,首先您需要创建一个批处理文件来导入您想要的注册表项。

  • 创建一个批处理文件,并赋予它你喜欢的任何名称,例如 import_reg_keys.bat

  • 编辑批处理文件,并以其最基本的形式使用以下命令:

    reg.exe 添加 HKCU\blah\blah\blah /v MyNewSetting /t REG_SZ /d 1 /f

用您感兴趣的子项替换 blah\blah\blah,用值替换 MyNewSetting,用值的类型 (REG_SZ、REG_MULTI_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY、REG_NONE) 替换 REG_SZ,并将 1 替换为您在新 reg 值中想要的任何数据。

  • 保存批处理文件,并将其复制到域 NETLOGON 共享(\\yourdomain.loc\netlogon) - 您需要域管理员权限才能执行此操作。

  • 编辑已创建的 GPO,然后导航至用户配置--策略--Windows 设置--脚本

  • 双击右侧的 LOGON 项,单击添加,单击浏览,在顶部的地址栏中输入 \\mydomain.loc\netlogon 并按回车键,然后从列表中选择您的批处理文件

  • 单击打开,单击确定,单击确定,关闭 GPO 编辑器

  • 返回 GPO 管理 MMC,双击您的新 GPO,然后在右侧选择“SCOPE”选项卡。

  • 在底部显示过滤的地方,确保您只有域计算机(yourdomain\Domain Computers)和经过身份验证的用户。如果您希望在将来进一步锁定这一点,这就是您如何过滤谁或什么必须应用此策略。

  • 请给我喝杯啤酒

将批处理文件放在 netlogon 共享中(而不是直接在 GPO 中设置)的好处是编辑起来要快得多。

PS. 将相关服务器移至该 OU(应为成员服务器 OU 的子 OU)

答案3

以下是另一种方法:

您是否已为用户准备了登录脚本?(在 AD 中的“配置文件”下的“用户”对象中定义)。如果有,请将以下几行添加到该脚本中:

如果“%computername%” ==“MyServer001” reg.exe添加HKCU \ blah \ blah \ blah / v MyNewSetting / t REG_SZ / d 1 / f

如果“%computername%” ==“MyServer002” reg.exe添加HKCU \ blah \ blah \ blah / v MyNewSetting / t REG_SZ / d 1 / f

为用户登录时需要此密钥的每台服务器添加尽可能多的这些行。这样,每次用户登录时,脚本都会查看他们登录的计算机名称,并且只有当该计算机与列出的计算机之一匹配时才应用注册表更改。如果他们登录自己的工作站,则计算机名称将不在列表中,并且不会获取密钥

相关内容