我们通常不使用漫游configuration文件,但我们需要testing我们的一些代码,以确保我们的工作。 这导致我们build立漫游configuration文件,然后尝试使用有问题的程序。
除了一台机器之外,我们尝试了这一切,一切都很顺利。 在那台机器上,产品失败了。 我们将失败追溯到两个现象:它不能创build任何COM对象,也不能读取Scripting.Dictionary。
进一步的诊断揭示了最近的原因:HKLM上的限制性ACL针对域用户保护了HKEY_CLASSES_ROOT。 它甚至没有授予读取权限。
碰到这个的那个人做了:
secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose net localgroup users accountname /add
一切都变好了
我怀疑有一些域策略需要设置为漫游configuration文件是有用的,导致默认情况下,这个ACL设置更宽容。 当然,那是因为我认为在这个ACL添加到域的时候默认设置这个ACL是正常的。
另一方面,这里的pipe理员发誓,我们没有任何政策可以解释这一点。 恐怕我们被宇宙射线击中了。
你原来的post,和你问Ben ZB的问题对我来说没有意义。 你的编辑让事情变得更加清晰,但是对于你所看到的内容我还是有些模糊的。
这听起来像你不知道漫游用户configuration文件实际上做了什么。
基于NT的操作系统上的每个用户都有自己的个人“HKEY_CURRENT_USER”registryconfiguration单元,存储在用户configuration文件的“NTUSER.DAT”文件中(存储在“C:\ Users \ username”或“C:\ Documents”和“设置\用户名”,默认情况下,取决于Windows版本)。 此registryconfiguration单元在login时连接到HKEY_USERS,并在注销时间处于detatched状态。 无论用户configuration文件的本地/漫游状态如何,此行为都是相同的。
“HKEY_CURRENT_USER”的这种“每用户”行为允许程序将用户特定的configuration信息存储在registry中每个用户相同的位置(即registrypath不涉及用户的帐户名),但同时允许不同的用户具有不同的configuration信息,因为每个用户都获得他们的“自己的”版本的“HKEY_CURRENT_USER”。
漫游用户configuration文件的“漫游”部分来自于在注销后将用户的configuration文件数据(包括“NTUSER.DAT”文件)上载到服务器,并在login之前将其下载并caching到本地。 此上载/下载行为不会更改Windows中每用户registryfunction的基本行为。 这只是一个辅助function,允许用户的个性化设置“跟随”他们从电脑到电脑。
无论login的用户如何,registry的“HKEY_LOCAL_MACHINE”子树都是特定于计算机的。 ACL保护存储在这个区域的设置免受非特权用户的修改,因为这是机器专用configuration信息的位置。 这些ACL是有原因的!
Ben ZB在他的回答中提到的function是一种常用的方法,当编写较差的软件要求非特权用户在“HKEY_LOCAL_MACHINE”等中具有较less限制的许可时,我们使用这种方法来更改(可能是大量的)计算机上的registry权限。此外,因为漫游用户configuration文件涉及“HKEY_USERS”和“HKEY_CURRENT_USER”registryconfiguration单元 – 两者都不能通过其描述的function进行修改,所以对于漫游用户configuration文件根本没有任何分歧。
编辑:
我当然不是要冒犯。 在处理了大量的软件之后,多年来没有任何关于正确使用registry的注意事项,我可能比我想要的更具防御性。 我已经编辑了我的答案,less一点说教,希望更简洁。
将计算机join域时,不会修改“HKEY_CLASSES_ROOT”(或“HKEY_LOCAL_MACHINE”)根目录下的ACL。 您的文章没有描述您在“HKEY_CLASSES_ROOT”根目录下添加到ACL中的特定ACE,因此要说明您的具体情况有点困难。
任何涉及您在registry中出现的域名的ACL几乎肯定会对第三方进行修改。 微软非常擅长在registry中使用知名的SID和本地组。
这听起来好像你的域中有一个组策略对象正在进行更改(使用BZ描述的function或通过脚本的方式)到registry中。 使用“策略结果集”(RSoP)pipe理控制台pipe理单元可能会有助于查看是否有任何启动脚本,registry安全策略等正在应用(尽pipe您可能具有只能运行的“trap door”启动脚本在join域之后的第一次启动,在启动后在RSoP中不再可见)。
您还可以通过将机器从域中分离,应用默认安全模板(如您在BZ中的注释中指示的),然后重新join域,在join域之后重新启动之前检查ACL来validation更改是否发生,重新启动后检查ACL。 当变化发生时,这将缩小范围。
漫游用户configuration文件的使用不会对机器configuration进行任何更改。 与用户configuration文件是否应该被视为浪漫有关的标志是从Active Directorylogin时获得的,并caching在“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList”的每个用户子项中。