“ HKLM”是否是“ HKEY_LOCAL_MACHINE”的别名?


61

HKLM通常用作的缩写HKEY_LOCAL_MACHINE。出乎意料的是,当我要求reg一个值时,这似乎也是正确的。

C:\>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentVersion"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    CurrentVersion    REG_SZ    6.1


C:\>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentVersion"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    CurrentVersion    REG_SZ    6.1

是否有引用断言它们是等效的,或者一个是另一个的别名?还是事实上,它们不是同一件事?

Answers:


79

不可以,尽管HKLM是HKEY_LOCAL_MACHINE的缩写,但是Microsoft没有官方声明它总是等效的。实际上,它明确指出这些快捷方式的可用性取决于所使用的软件,它们通常被称为“常用缩写”。

在某些情况下,例如在定义策略时,不允许将HKEY_LOCAL_MACHINE缩写为HKLM :

适用以下条件:

  1. 注册表路径必须用百分号(%)括起来。
  2. 注册表设置必须是REG_SZ或REG_EXPAND_SZ类型。如果注册表值包含环境变量,则在评估策略时将扩展这些变量。
  3. 不要将HKLM用作HKEY_LOCAL_MACHINE的缩写,也不要将HKCU用作HKEY_CURRENT_USER的缩写。
  4. 注册表路径规则也可以包含后缀路径。

(从软件限制策略的文档中,我加粗了。)


3
这是正确的答案。全名是内核支持的唯一名称。任何缩写都是特定于工具的。
2014年

13
>它明确指出这些快捷方式的可用性取决于所使用的软件,它们通常被称为“常用缩写”。如果您可以链接到其来源,那就太好了。(不是我不信任您,而是权威人士提出了更强的主张。)
鲍勃

1
同样,您不能在.reg文件中使用这些缩写,您必须在正方形范围内写全名

@LightnessRacesinOrbit随时提供一些证据证明它是错误的。
Andrew Medico 2014年

4

是。

HKLM代表HKEY_LOCAL_MACHINE变量。

HKCU代表HKEY_CURRENT_USER。

他们是一样的东西。

根据维基百科

有七个预定义的根键,传统上是根据Win32 API中定义的常量句柄或同义缩写(取决于应用程序)来命名的:

  • HKEY_LOCAL_MACHINE或HKLM
  • HKEY_CURRENT_CONFIG或HKCC(仅在Windows 9x和NT中)
  • HKEY_CLASSES_ROOT或HKCR
  • HKEY_CURRENT_USER或HKCU
  • HKEY_USERS或HKU
  • HKEY_PERFORMANCE_DATA(仅在Windows NT中,但在Windows注册表编辑器中不可见)
  • HKEY_DYN_DATA(仅在Windows 9x中,在Windows注册表编辑器中可见)

16
这表示它们在口语上是等效的,但不是将它们定义为相同的事物或别名。特别是“取决于应用程序”。
Joe Kearney 2014年

它也是一个几乎没有资源的Wikipedia页面,因此以它的价值为准(可能准确,但实际上并不比SO或SU页面好,甚至更糟)。
2014年

尽管它们是同一回事,但缩写不是标准的一部分,因此不是纯等价的。

4

我要补充一点,在PowerShell中,HKLM作为HKEY_LOCAL_MACHINE的挂载而存在,因为它是可变的。例

PS>获取物品HKLM:
名称属性
---- --------
HKEY_LOCAL_MACHINE

PS>删除PSDrive HKLM

PS>获取物品HKLM:
Get-Item:找不到驱动器。名称为“ HKLM”的驱动器不存在。

2

正如Twinkles指出的那样,它是一个常用的缩写。我没有看到任何资料明确指出不能使用它,但是我确实找到了一个表,该表指示Windows 2000注册表子树的常用缩写,它们与当前集合(从Windows 7开始)大部分相同。这是我在那里发现的:

Windows 2000注册表概述(已针对此站点的格式进行了修改):

Table 16.1 Registry Subtrees
HKEY_CLASSES_ROOT  HKCR
HKEY_CURRENT_USER HKCU
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_CURRENT_CONFIG HKCC
HKEY_PERFORMANCE_DATA No commonly used abbreviation

XP支持文章中也列出了该列表,减去了Performance Data子树(我认为现在已经消失了,Pankaj / Wikipedia支持该想法)。

还有一个Windows注册表参考,我将其链接到“预定义键”页面,该页面列出了各个子树,每个子树都具有指向其特定页面的链接(出于某些原因,其中大多数都转到Windows Server 2003页面)。他们也在那里列出了缩写,与上面的一致。

这些页面都没有讨论缩写是否可以在编程中使用,但是,这使我相信没有在任何地方明确说明缩写-而是一条未声明的规则(如果不确定是否可以使用缩写,请不要使用缩写) 。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.