Чи "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

Чи існує посилання, що стверджує, що вони еквівалентні, або що один є псевдонімом для іншого? Або є, власне, випадки, коли вони не є одне і те ж?

Відповіді:


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
Це правильна відповідь. Повні імена - це єдині, які підтримуються ядром. Будь-які скорочення залежать від інструмента.
— Ендрю Медіко

13
> в ньому прямо зазначено, що доступність цих ярликів залежить від програмного забезпечення, яке використовується, і вони, як правило, називаються "загальновживаними абревіатурами". Було б чудово, якби ви могли посилатися на джерело для цього. (Не те, що я вам не довіряю, але авторитетне джерело робить претензію сильнішою.)
— Боб

1
також ви не можете використовувати ці абревіатури у .regфайлах, ви повинні вписати повне ім’я всередині квадратних областей

@LightnessRacesinOrbit Не соромтеся представляти докази, що підтверджують це неправильно.
— Ендрю Медіко

4

Так.

HKLM означає "Змінна HKEY_LOCAL_MACHINE".

І HKCU означає HKEY_CURRENT_USER.

Вони те саме.

За даними Вікіпедії :

Існує сім попередньо визначених кореневих ключів, традиційно названих відповідно до їх постійних ручок, визначених в API Win32, або за синонімічними абревіатурами (залежно від додатків):

  • 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
Це говорить про те, що вони розмовно рівнозначні, але не те, що вони визначені як однакова річ або псевдоніми; зокрема "залежно від додатків".
— Джо Керні

Це також здебільшого не розміщена сторінка Вікіпедії, тому візьміть це за те, що воно коштує (можливо, точно, але не краще, ніж сторінка SO або SU реалістично, а може бути і гірше).
— Джо

Хоча вони одне й те саме, абревіатура не є частиною стандарту і тому не є чистим еквівалентом.

4

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

PS> Отримати позицію HKLM:
Назва власності
---- --------
HKEY_LOCAL_MACHINE

PS> Remove-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 , за вирахуванням піддерева даних про продуктивність (який, на мою думку, зараз відсутній, і Pankaj / Wikipedia підтримують цю думку).

Існує також довідник про реєстр Windows , який я пов’язав зі сторінкою «Заздалегідь визначені ключі», в якій перераховані різні підрядки, кожен з яких має посилання на свою конкретну сторінку (більшість з яких-небудь причин переходить на сторінки Windows Server 2003). Вони також перераховують абревіатури, які відповідають вищезгаданому.

Жодна з цих сторінок не обговорює, чи можна абревіатури використовувати в програмуванні, однак, я змушую вважати, що це ніде не вказано прямо - але це більше нестандартне правило (не використовуйте скорочення, якщо ви не впевнені, що вони працюватимуть) .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.