it-swarm.com.de

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

HKLM wird häufig als Abkürzung für HKEY_LOCAL_MACHINE verwendet. Etwas unerwartet scheint dies auch zuzutreffen, wenn ich reg nach 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?

60
Joe Kearney

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 wenn eine Richtlinie definiert :

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 von Softwareeinschränkungsrichtlinien , von mir hinzugefügt.)

78
Twinkles

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> Remove-PSDrive HKLM 
 
 PS> Get-Item HKLM: 
 Get-Item: Laufwerk kann nicht gefunden werden. Ein Laufwerk mit dem Namen 'HKLM' existiert nicht. 
4
Steven Penny

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 in 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)
4
Kunal

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, in der die häufig verwendeten Abkürzungen für die Windows 2000-Registrierungsteilstrukturen aufgeführt sind, die größtenteils mit dem aktuellen Satz identisch sind (ab Windows 7). Folgendes habe ich dort herausgefunden:

Von Registrierungsübersicht für Windows 2000 (zur Formatierung für diese Site geändert):

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 (Die meisten davon gehen aus irgendeinem Grund auf Windows Server 2003-Seiten). 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 in der 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). .

2
Joe