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

Есть ли ссылка, утверждающая, что они эквивалентны или что один является псевдонимом для другого? Или есть, на самом деле, случаи, когда они не одно и то же?

4 ответа4

78

Нет, хотя 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. Правило пути реестра также может включать путь суффикса.

(Из документации политик ограниченного использования программ смелость добавлена мной.)

4

Я бы добавил, что в PowerShell HKLM существует как монтирование для HKEY_LOCAL_MACHINE, так как оно является изменчивым. пример

PS > Get-Item HKLM:
Name                           Property
----                           --------
HKEY_LOCAL_MACHINE

PS > Remove-PSDrive HKLM

PS > Get-Item HKLM:
Get-Item : Cannot find drive. A drive with the name 'HKLM' does not exist.
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)
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). Там также перечислены аббревиатуры, соответствующие приведенному выше.

Однако ни на одной из этих страниц не обсуждается возможность использования аббревиатур в программировании, что заставляет меня полагать, что это нигде явно не указано - но это скорее негласное правило (не используйте аббревиатуры, если вы не уверены, что они будут работать),

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .