将registry或ADM应用于组策略以login到特定服务器

我有一些运行共享应用程序的Windows 2008 Serverterminal服务服务器。 不幸的是,要正常运行应用程序有一些HKEY_CURRENT_USER设置,需要写入每个用户的registry时,他们login。这些设置将随着时间的推移而改变,所以我不想编辑C:\ Users \ Default \ NTUser.dat; 我希望他们通过Active Directory应用。

我已经确定了相应的条目,并将它们导出为registry文件,并将它们另外转换为ADM。 我想configurationActive Directory组策略的某些部分,将.REG或ADM作为login脚本(对于所有用户)加载到这些服务器上(服务器在它们自己的OU中)。

我怎样才能做到这一点? 我已经在OU中制定了一个政策,但是另外难倒了; 我尝试将ADM加载到GPOpipe理编辑器,但似乎没有做任何事情…

也许这是“Active Setup”( 为所有现有用户和所有新用户添加HKCU密钥和值的最佳方式? )和Loopback Processing( http://support.microsoft.com/kb/231287 )的一些组合,但我的知识GPO非常有限。

您是说只有当用户login到某些计算机时,才会将用户设置应用于用户? 听起来很难,呃? 这并不难。 这听起来像是一个环回组策略处理的工作!

假设如下:

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

您希望为所有login到“特殊计算机”OU中的计算机的用户应用用户设置(如运行login脚本或应用其他types的GPO用户设置)。 但是,当他们login到其他OU中的计算机时,您不希望应用这些特殊设置。

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

(“但是等等,Evan!用户的帐户对象不在'特殊计算机OU'中!”是的,我知道这个,留在这里我见过的大多数ADpipe理员不理解环回策略处理和害怕,我曾经看到过使用“特殊计算机”等方式创build用户login时使用的次要用户帐户的可怕的黑客攻击…>不寒而栗<)

在您创build的GPO中,进入计算机“pipe理模板”,“系统”,“组策略”,并find“用户组策略环回处理模式”的设置。 启用此设置。 在“模式”框中,如果您希望忽略所有用户的“正常”组策略设置,并且仅应用此新GPO中的用户策略设置,请select“replace”。 如果希望GPO中的用户设置在应用所有正常用户设置后应用,请select“合并”。

我的意见是,这比在login脚本中涉及“If computer == blah”的“黑客”要干净得多。


我的build议是使用组策略首选项(GPP)registry设置,而不是使用login脚本。 它将应用一次,在用户的registry中保留默认设置,但用户可以在将来自由地更改设置,而不会在每次login时都“砸”它们。

如果这些是Windows Server 2008计算机,就像标签所说的那样,那么真的没有理由不使用GPPregistry设置。 看看下面的文章了解更多的细节。 这是W2K8的一个非常好的function,你应该利用这个function。

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设置自定义registry设置。 编辑GPO,然后浏览到此部分:

计算机configuration – 策略 – Windows设置 – 安全设置 – registry

无论您在此处定义的键组合是否将应用于该OU中的机器。

此外,您应该更改GPO的“ 范围”筛选以应用于您感兴趣的AD中的对象。它可能已默认为已通过身份validation的用户 。 如果这是正确的,那么就离开它。 我怀疑你将需要改变它,但它适用于域计算机 。 不要担心,它只适用于该OU中的域计算机和所有子OU

编辑:

编辑提供如何在GPObatch fileregistry导入和login脚本。

所以,首先你需要创build一个batch file来导入你想要的registry项。

  • 创build一个batch file,并给它任何你喜欢的名字,例如import_reg_keys.bat

  • 编辑batch file,并以其最基本的forms使用以下命令:

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

将blah \ blah \ blahreplace为您感兴趣的子项,用值replaceMyNewSetting,用值types(REG_SZ,REG_MULTI_SZ,REG_EXPAND_SZ,REG_DWORD,REG_BINARY,REG_NONE)replaceREG_SZ,然后将数据replace为1想在你的新的价值观。

  • 保存batch file,并将其复制到域NETLOGON共享(\\ yourdomain.loc \ netlogon) – 您将需要域pipe理员权限来执行此操作。

  • 编辑您已经创build的GPO,然后导航到“用户configuration – 策略 – Windows设置 – 脚本”

  • 双击右边的LOGON项目,点击ADD,点击BROWSE,在顶部的地址栏中input\\ mydomain.loc \ netlogon并按下回车键,然后从列表中select你的batch file

  • 单击打开,单击确定,单击确定,closuresGPO编辑器

  • 返回到GPOpipe理MMC,双击您的新GPO,然后在右侧selectSCOPE选项卡。

  • 在底部说过滤,确保您只有域计算机(yourdomain \域计算机)和身份validation的用户。 如果你想在未来进一步locking这个,那么这就是你如何规定谁或什么必须适用这个政策。

  • 给我买一杯啤酒

在netlogon共享中使用batch file(而不是直接在GPO中进行设置)的好处是编辑起来要快得多。

PS。 将有问题的服务器移动到该OU(应该是成员服务器OU的子OU)

这是另一种方法:

你已经有一个用户login脚本? (在configuration文件下的AD中的用户对象中定义)。 如果你这样做,然后将这些行添加到该脚本:

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

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

当用户login时,需要为每个需要此密钥的服务器添加上述行数。这样,​​每次用户login时,脚本都会查看他们正在login的计算机名称,并且只会应用registry更改机匹配列出的之一。 如果他们login到自己的工作站,机器名称将不在列表中,并且不能获得密钥