"HKLM" è un alias per "HKEY_LOCAL_MACHINE"?


61

HKLMè spesso usato come abbreviazione di HKEY_LOCAL_MACHINE. In qualche modo inaspettatamente questo sembra essere vero anche quando chiedo regun valore.

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

C'è un riferimento che afferma che sono equivalenti o che uno è un alias per l'altro? O ci sono, infatti, casi in cui non sono la stessa cosa?

Risposte:


79

No, sebbene HKLM sia un'abbreviazione di HKEY_LOCAL_MACHINE, non esiste alcuna dichiarazione ufficiale da parte di Microsoft che sia sempre equivalente. In realtà, afferma esplicitamente che la disponibilità di queste scorciatoie dipende dal software utilizzato e sono generalmente denominate "abbreviazioni comunemente utilizzate".

In alcuni casi non è consentito abbreviare HKEY_LOCAL_MACHINE in HKLM, ad esempio quando si definisce un criterio :

Si applicano le seguenti condizioni:

  1. Il percorso del registro deve essere racchiuso tra segni di percentuale (%).
  2. L'impostazione del registro deve essere di tipo REG_SZ o REG_EXPAND_SZ. Se il valore del Registro di sistema contiene variabili di ambiente, queste verranno espanse quando viene valutata la politica.
  3. Non utilizzare HKLM come abbreviazione di HKEY_LOCAL_MACHINE o HKCU come abbreviazione di HKEY_CURRENT_USER.
  4. Una regola del percorso di registro può anche includere un percorso di suffisso.

(Dalla documentazione delle politiche di restrizione del software , audacia aggiunta da me.)


3
Questa è la risposta corretta I nomi completi sono gli unici supportati dal kernel. Eventuali abbreviazioni sono specifiche dello strumento.
Andrew Medico

13
> afferma esplicitamente che la disponibilità di queste scorciatoie dipende dal software utilizzato e sono generalmente indicate come "abbreviazioni di uso comune". Sarebbe bello se si potesse collegare a una fonte per questo. (Non che non mi fidi di te, ma una fonte autorevole rende la richiesta più forte.)
Bob

1
inoltre non è possibile utilizzare queste abbreviazioni nei .regfile, è necessario scrivere il nome completo all'interno degli ambiti quadrati lì

@LightnessRacesinOrbit Sentiti libero di produrre alcune prove che lo dimostrano sbagliato.
Andrew Medico,

4

Sì.

HKLM sta per HKEY_LOCAL_MACHINE Variable.

E HKCU sta per HKEY_CURRENT_USER.

Sono la stessa cosa.

Secondo Wikipedia :

Esistono sette chiavi di root predefinite, tradizionalmente denominate in base ai loro handle costanti definiti nell'API Win32 o da abbreviazioni (a seconda delle applicazioni):

  • HKEY_LOCAL_MACHINE o HKLM
  • HKEY_CURRENT_CONFIG o HKCC (solo in Windows 9x e NT)
  • HKEY_CLASSES_ROOT o HKCR
  • HKEY_CURRENT_USER o HKCU
  • HKEY_USERS o HKU
  • HKEY_PERFORMANCE_DATA (solo in Windows NT, ma invisibile nell'Editor del registro di Windows)
  • HKEY_DYN_DATA (solo in Windows 9x e visibile nell'Editor del registro di Windows)

16
Questo dice che sono colloquialmente equivalenti, ma non che sono definiti come la stessa cosa o alias; in particolare "a seconda delle applicazioni".
Joe Kearney,

È anche una pagina di Wikipedia per lo più non fornita, quindi prendilo per quello che vale (probabilmente accurato ma non meglio di una pagina SO o SU realisticamente, e forse peggio).
Joe,

Sebbene siano la stessa cosa, l'abbreviazione non fa parte dello standard e quindi non è un equivalente puro.

4

Vorrei aggiungere che con PowerShell, HKLM esiste come mount per HKEY_LOCAL_MACHINE, in quanto tale è mutabile. Esempio

PS> Get-Item HKLM:
Proprietà nome
---- --------
HKEY_LOCAL_MACHINE

PS> Rimuovi-PSDrive HKLM

PS> Get-Item HKLM:
Get-Item: impossibile trovare l'unità. Non esiste un'unità con il nome "HKLM".

2

Come osserva Twinkles, è un'abbreviazione comunemente usata. Non vedo alcuna fonte che dice esplicitamente che non può essere utilizzata, ma ho trovato una tabella che indica le abbreviazioni comunemente utilizzate per i sottotitoli del registro di Windows 2000, che sono per lo più identici all'insieme corrente (A partire da Windows 7). Ecco cosa ho scoperto là fuori:

Da Panoramica del registro di sistema per Windows 2000 (modificato per la formattazione di questo sito):

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

Tale elenco è presentato anche in un articolo di supporto di XP , meno la sottostruttura di Performance Data (che credo sia ormai scomparsa e Pankaj / Wikipedia supportano tale pensiero).

C'è anche il riferimento al registro di Windows , che ho collegato alla pagina Chiavi predefinite, che elenca i vari sottotitoli, ognuno dei quali ha collegamenti alla propria pagina specifica (la maggior parte dei quali va alle pagine di Windows Server 2003 per qualche motivo). Elencano anche qui le abbreviazioni, che sono coerenti con quanto sopra.

Nessuna di queste pagine discute se le abbreviazioni possono essere utilizzate nella programmazione, il che mi porta a credere che non sia esplicitamente dichiarato da nessuna parte - ma è più una regola non dichiarata (non usare abbreviazioni se non sei sicuro che funzioneranno) .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.