对于系统策略,HKLM 注册中心是否优先于 HKCU?

nob*_*ody 8 windows windows-registry

我似乎找不到任何明确的信息,因为有一些消息来源说:

HKLM\SOFTWARE\Classes如果和中都存在条目HKCU\SOFTWARE\Classes,则 中条目的值HKCU\SOFTWARE\Classes优先。

但是,我无法判断此规则是否适用于系统策略;具体来说,我关心的DisableLockWorkstation是:

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
Run Code Online (Sandbox Code Playgroud)

如果两者都存在并且存在冲突,那么哪一个优先?对此是否有一般规则?

har*_*ymc 6

引用自维基百科\n Windows 注册表

\n
\n

HKEY_LOCAL_MACHINE(本地计算机特定配置数据)和 HKEY_CURRENT_USER(用户特定配置数据)节点具有相似的结构;用户应用程序通常首先在“HKEY_CURRENT_USER\\Software\\Vendor\'s name\\Application\'s name\\Version\\Setting name”中检查其设置,如果未找到该设置,请查找而是在 HKEY_LOCAL_MACHINE 键下的同一位置。

\n

然而,相反的情况可能适用于管理员强制执行的策略设置,其中 HKLM 可能优先于 HKCU。Windows 徽标计划对不同类型的用户数据的存储位置有特定要求,并且遵循最小权限的概念,以便使用应用程序时不需要管理员级别的访问权限。

\n
\n

不幸的是,\n我认为这个问题没有明确的答案,\n因此这一切都取决于所讨论的程序。

\n

对于非特定于用户的策略,用户应用程序似乎更喜欢 HKCU,而 Windows 则更喜欢 HKLM。\n但是,规则并未具体设置,并且可能存在大量例外情况。

\n

Windows 徽标计划的维基百科链接已失效,\n但我设法找到\n 专为 Windows XP 应用程序规范而设计\n(存档文章),\n它与上述“Windows 徽标计划”相关,\n包含以下内容规则\n通常支持上述内容:

\n
\n

使用注册表

\n

应用程序还可以使用注册表来存储读/写应用程序数据和配置文件。

\n
    \n
  • HKCU 注册表配置单元适合存储少量数据(大约 64K)以及每个用户的策略设置。
  • \n
  • 避免在运行时写入 HKLM,因为默认情况下有限的用户对整个 HKLM 树具有只读访问权限。此外,HKLM\n不支持漫游。
  • \n
  • 较大的基于文件的数据应放置在“应用程序数据”文件夹中。例如,Internet Explorer\xe2\x80\x99s 临时 Internet 缓存\n存储在用户配置文件中,而不是存储在注册表中。
  • \n
  • 安装时,应用程序在 HKCU 和 HKLM 中存储的总容量不得超过 128K。请注意,\nHKEY_CLASSES_ROOT 被排除。
  • \n
\n
\n

这是我能找到的最早的有关使用注册表的指南的文档。我不知道这些指导方针被遵循或正在被遵循的情况如何。

\n


小智 3

这里没有铁律。优先级完全取决于程序员的决定,因此不同系统之间的优先级不同,有时甚至同一开发人员的不同程序之间的优先级也不同。

根据经验,申请者更喜欢 HKCU,因为它更具体。从逻辑上讲,如果用户有特定的设置,那么它可能比一般设置对他更好。但是即。.\Run 条目首先从 HKLM 读取,并且许多策略优先考虑 HKLM 设置而不是 HKCU。

考虑到这DisableLockWorkstation是一项政策,我认为 HKLM 在这种情况下会优先考虑。但除了通过对生命系统进行测试之外,没有其他方法可以证明这一点。