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