我有一些运行共享应用程序的 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 非常有限。
您是说只有在用户登录某些计算机时才希望将用户设置应用于用户?听起来很难吧?这一点都不难。这听起来像是环回组策略处理的工作!
假设如下:
您想为登录到“特殊计算机”OU 中计算机的所有用户应用用户设置(例如运行登录脚本或应用其他类型的 GPO 用户设置)。但是,当他们登录到位于其他 OU 中的计算机时,您不希望应用这些特殊设置。
创建 GPO 并将其链接到“特殊计算机”OU。在该 GPO 中指定要应用的所有与用户相关的设置。
(“但是等等,Evan!用户的帐户对象不在 'Special Computers' OU 中!”是的。我知道。留在我这里。我遇到的大多数 AD 管理员不了解环回策略处理和害怕。我见过可怕的黑客攻击,比如创建辅助用户帐户供用户在使用“特殊计算机”时登录等等......>颤抖<)
在您创建的 GPO 中,进入 COMPUTER“管理模板”、“系统”、“组策略”,找到设置“用户组策略环回处理模式”。启用此设置。如果您希望忽略所有用户的“正常”组策略设置并且仅应用此新 GPO 中的用户策略设置,请在“模式”框中选择“替换”。如果您希望 GPO 中的用户设置在其所有正常用户设置都已应用后应用,请选择“合并”。
我的观点是,这比登录脚本中涉及“If computer == blah”的“hacks”要干净得多。
我对您的建议是使用组策略首选项 (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
您需要决定要走哪条路线 - ADM 或 Registry。
您可以通过 GPO 设置自定义注册表设置。编辑 GPO,然后浏览到此部分:
计算机配置 -- 策略 -- Windows 设置 -- 安全设置 -- 注册表
您在此处定义的任何键组合都将应用于该 OU 中的机器。
此外,您应该更改 GPO 的Scope 过滤以应用于您感兴趣的 AD 中的对象。它可能已默认为Authenticated Users。如果那是对的,那就离开吧。我怀疑您将需要更改它,以便将其应用于Domain Computers。不用担心,它只适用于该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_SZ、REG_MULTI_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY、REG_NONE),然后将 1 替换为您的任何数据想要你的新 reg 值。
保存批处理文件,并将其复制到域 NETLOGON 共享 (\\yourdomain.loc\netlogon) - 您需要域管理员权限才能执行此操作。
编辑您已经创建的 GPO,然后导航到用户配置 -- 策略 -- Windows 设置 -- 脚本
双击右侧的 LOGON 项,单击 ADD,单击 BROWSE,在顶部的地址栏中输入 \\mydomain.loc\netlogon 并回车,然后从列表中选择您的批处理文件
点击打开,点击确定,点击确定,关闭GPO编辑器
返回 GPO Management MMC,双击新 GPO,然后在右侧选择 SCOPE 选项卡。
在底部显示过滤的地方,确保您只有域计算机(您的域\域计算机)和经过身份验证的用户。如果您想在将来进一步锁定它,这就是您必须应用此政策的申报人或事物的方式。
给我买啤酒
将批处理文件放在 netlogon 共享中(而不是直接在 GPO 中设置)的好处是编辑起来要快得多。
PS。将有问题的服务器移动到该 OU(应该是您的成员服务器 OU 的子 OU)
这是另一种方法:
您是否已经为您的用户准备了登录脚本?(在配置文件下的 AD 中的用户对象中定义)。如果这样做,则将这些行添加到该脚本中:
if "%computername%"=="MyServer001" reg.exe 添加 HKCU\blah\blah\blah /v MyNewSetting /t REG_SZ /d 1 /f
if "%computername%"=="MyServer002" reg.exe 添加 HKCU\blah\blah\blah /v MyNewSetting /t REG_SZ /d 1 /f
为用户登录时需要此密钥的每个服务器添加尽可能多的这些行。这样,每次用户登录时,脚本将查看他们正在登录的机器名称,并且仅在此情况下应用注册表更改machine 匹配列出的其中之一。如果他们登录到自己的工作站,机器名称将不在列表中,并且无法获取密钥