Ist "HKLM" ein Alias ​​für "HKEY_LOCAL_MACHINE"?

61

HKLMwird oft als Abkürzung für verwendet HKEY_LOCAL_MACHINE. Etwas unerwartet scheint dies auch zuzutreffen, wenn ich regnach einem Wert frage .

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

Gibt es einen Verweis, der behauptet, dass sie gleichwertig sind, oder dass einer ein Alias ​​für den anderen ist? Oder gibt es tatsächlich Fälle, in denen sie nicht dasselbe sind?

Joe Kearney
quelle

Antworten:

79

Nein, obwohl HKLM eine Abkürzung für HKEY_LOCAL_MACHINE ist, gibt es keine offizielle Erklärung von Microsoft, dass es immer gleichwertig ist. Tatsächlich wird ausdrücklich darauf hingewiesen, dass die Verfügbarkeit dieser Verknüpfungen von der verwendeten Software abhängt und im Allgemeinen als "häufig verwendete Abkürzungen" bezeichnet wird.

Es gibt Fälle, in denen die Abkürzung von HKEY_LOCAL_MACHINE zu HKLM nicht zulässig ist, beispielsweise beim Definieren einer Richtlinie :

Es gelten folgende Bedingungen:

  1. Der Registrierungspfad muss von Prozentzeichen (%) umschlossen sein.
  2. Die Registrierungseinstellung muss vom Typ REG_SZ oder REG_EXPAND_SZ sein. Wenn der Registrierungswert Umgebungsvariablen enthält, werden diese bei der Auswertung der Richtlinie erweitert.
  3. Verwenden Sie HKLM nicht als Abkürzung für HKEY_LOCAL_MACHINE oder HKCU nicht als Abkürzung für HKEY_CURRENT_USER.
  4. Eine Registrierungspfadregel kann auch einen Suffixpfad enthalten.

(Aus der Dokumentation der Richtlinien für Softwareeinschränkungen , von mir hinzugefügte Kühnheit.)

Funkelt
quelle
3
Das ist die richtige Antwort. Nur die vollständigen Namen werden vom Kernel unterstützt. Abkürzungen sind werkzeugspezifisch.
Andrew Medico
13
> Es wird ausdrücklich darauf hingewiesen, dass die Verfügbarkeit dieser Verknüpfungen von der verwendeten Software abhängt und im Allgemeinen als "häufig verwendete Abkürzungen" bezeichnet wird . (Nicht, dass ich dir nicht vertraue, aber eine maßgebliche Quelle macht die Behauptung stärker.)
Bob
1
Außerdem können Sie diese Abkürzungen nicht in .regDateien verwenden. Sie müssen den vollständigen Namen in die quadratischen Bereiche
@LightnessRacesinOrbit Fühlen Sie sich frei, Beweise dafür vorzulegen, dass es falsch ist.
Andrew Medico
4

Ja.

HKLM steht für HKEY_LOCAL_MACHINE Variable.

Und HKCU steht für HKEY_CURRENT_USER.

Sie sind das gleiche.

Laut Wikipedia :

Es gibt sieben vordefinierte Stammschlüssel, die traditionell nach ihren in der Win32-API definierten Konstantenhandles oder auch nach Abkürzungen (je nach Anwendung) benannt sind:

  • HKEY_LOCAL_MACHINE oder HKLM
  • HKEY_CURRENT_CONFIG oder HKCC (nur unter Windows 9x und NT)
  • HKEY_CLASSES_ROOT oder HKCR
  • HKEY_CURRENT_USER oder HKCU
  • HKEY_USERS oder HKU
  • HKEY_PERFORMANCE_DATA (nur in Windows NT, aber im Windows-Registrierungseditor unsichtbar)
  • HKEY_DYN_DATA (nur in Windows 9x und im Windows-Registrierungseditor sichtbar)
Kunal
quelle
16
Dies besagt, dass sie umgangssprachlich gleichwertig sind, aber nicht, dass sie als dasselbe oder als Aliase definiert sind; insbesondere "anwendungsabhängig".
Joe Kearney
Es ist auch eine Wikipedia-Seite, die größtenteils nicht aus Quellen stammt. Nehmen Sie diese Seite also für das, was sie wert ist (wahrscheinlich genau, aber realistisch gesehen nicht besser als eine SO- oder SU-Seite, und vielleicht noch schlimmer).
Joe
Obwohl es sich um dasselbe handelt, ist die Abkürzung nicht Bestandteil des Standards und daher keine reine Entsprechung.
4

Ich würde hinzufügen, dass mit PowerShell HKLM als Mount für HKEY_LOCAL_MACHINE existiert, da es veränderlich ist. Beispiel

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

PS> PSDrive HKLM entfernen

PS> Get-Item HKLM:
Get-Item: Laufwerk kann nicht gefunden werden. Ein Laufwerk mit dem Namen 'HKLM' existiert nicht.
Steven Penny
quelle
2

Wie Twinkles feststellt, handelt es sich um eine häufig verwendete Abkürzung. Ich sehe keine Quelle, die ausdrücklich angibt, dass sie nicht verwendet werden kann, aber ich habe eine Tabelle gefunden, die die gebräuchlichen Abkürzungen für die Windows 2000-Registrierungsunterstrukturen angibt, die größtenteils mit dem aktuellen Satz identisch sind (ab Windows 7). Folgendes habe ich dort herausgefunden:

In der Registrierungsübersicht für Windows 2000 (geändert für die Formatierung dieser Site):

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

Diese Liste wird auch in einem XP-Support-Artikel dargestellt , abzüglich des Teilbaums Leistungsdaten (von dem ich denke, dass er jetzt weg ist und Pankaj / Wikipedia diesen Gedanken unterstützt).

Es gibt auch die Windows-Registrierungsreferenz , die ich mit der Seite "Vordefinierte Schlüssel" verknüpft habe, auf der die verschiedenen Unterstrukturen aufgelistet sind, von denen jede über Links zu ihrer jeweiligen Seite verfügt (von denen die meisten aus irgendeinem Grund auf Windows Server 2003-Seiten verweisen). Sie listen dort auch die Abkürzungen auf, die mit den obigen übereinstimmen.

Auf keiner dieser Seiten wird jedoch erläutert, ob die Abkürzungen für die Programmierung verwendet werden können, was mich zu der Annahme führt, dass dies nirgendwo explizit angegeben wird - es handelt sich jedoch eher um eine nicht angegebene Regel (verwenden Sie keine Abkürzungen, wenn Sie nicht sicher sind, ob sie funktionieren). .

Joe
quelle