Est-ce que «HKLM» est un alias pour «HKEY_LOCAL_MACHINE»?

61

HKLMest souvent utilisé comme abréviation de HKEY_LOCAL_MACHINE. De manière quelque peu inattendue, cela semble également être vrai lorsque je demande regune valeur.

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

Existe-t-il une référence affirmant qu'ils sont équivalents ou que l'un est un alias pour l'autre? Ou existe-t-il, en fait, des cas où ce n'est pas la même chose?

Joe Kearney
la source

Réponses:

79

Non, bien que HKLM soit une abréviation de HKEY_LOCAL_MACHINE, il n’ya pas de déclaration officielle de Microsoft indiquant qu’elle est toujours équivalente. En fait, il est dit explicitement que la disponibilité de ces raccourcis dépend du logiciel utilisé et ils sont généralement appelés "abréviations couramment utilisées".

Dans certains cas, l’abréviation de HKEY_LOCAL_MACHINE en HKLM n’est pas autorisée, par exemple lors de la définition d’une politique :

Les conditions suivantes s'appliquent:

  1. Le chemin du registre doit être entouré de signes de pourcentage (%).
  2. Le paramètre de registre doit être un type REG_SZ ou REG_EXPAND_SZ. Si la valeur de registre contient des variables d'environnement, celles-ci seront développées lors de l'évaluation de la stratégie.
  3. N'utilisez pas HKLM comme abréviation de HKEY_LOCAL_MACHINE ou HKCU comme une abréviation de HKEY_CURRENT_USER.
  4. Une règle de chemin de registre peut également inclure un chemin de suffixe.

(D'après la documentation des stratégies de restriction logicielle , l'audace ajoutée par moi.)

Scintille
la source
3
C'est la bonne réponse. Les noms complets sont les seuls pris en charge par le noyau. Toutes les abréviations sont spécifiques à un outil.
Andrew Medico
13
> il est explicitement indiqué que la disponibilité de ces raccourcis dépend du logiciel utilisé et qu'ils sont généralement appelés "abréviations couramment utilisées". Ce serait formidable si vous pouviez créer un lien vers une source pour cela. (Non pas que je ne vous fais pas confiance, mais une source faisant autorité renforce la demande.)
Bob
1
De plus, vous ne pouvez pas utiliser ces abréviations dans les .regfichiers, vous devez écrire le nom complet à l'intérieur des
@LightnessRacesinOrbit N'hésitez pas à produire des preuves pour le prouver.
Andrew Medico
4

Oui.

HKLM signifie HKEY_LOCAL_MACHINE Variable.

Et HKCU signifie HKEY_CURRENT_USER.

Ce sont les mêmes choses.

Selon Wikipedia :

Il existe sept clés racine prédéfinies, généralement nommées en fonction de leurs handles constants définis dans l'API Win32, ou par des abréviations synonymes (en fonction des applications):

  • HKEY_LOCAL_MACHINE ou HKLM
  • HKEY_CURRENT_CONFIG ou HKCC (uniquement sous Windows 9x et NT)
  • HKEY_CLASSES_ROOT ou HKCR
  • HKEY_CURRENT_USER ou HKCU
  • HKEY_USERS ou HKU
  • HKEY_PERFORMANCE_DATA (uniquement sous Windows NT, mais invisible dans l'éditeur de registre Windows)
  • HKEY_DYN_DATA (uniquement sous Windows 9x et visible dans l'éditeur de registre Windows)
Kunal
la source
16
Cela signifie qu'ils sont équivalents familièrement, mais pas qu'ils sont définis comme étant la même chose ou les mêmes pseudonymes; en particulier "en fonction des applications".
Joe Kearney
C’est aussi une page de Wikipédia qui n’est généralement pas alimentée par des sources d’énergie, prenez donc cela à sa juste valeur (probablement exacte mais pas meilleure qu’une page SO ou SU de manière réaliste, et peut-être pire).
Joe
Bien que ce soit la même chose, l’abréviation ne fait pas partie de la norme et n’est donc pas l’équivalent pur.
4

J'ajouterais qu'avec PowerShell, HKLM existe en tant que montage pour HKEY_LOCAL_MACHINE, en tant que tel, il est mutable. Exemple

PS> Get-Item HKLM:
Propriété Nom
---- --------
HKEY_LOCAL_MACHINE

PS> Supprimer-PSDrive HKLM

PS> Get-Item HKLM:
Get-Item: lecteur introuvable. Un lecteur avec le nom 'HKLM' n'existe pas.
Steven Penny
la source
2

Comme le note Twinkles, il s’agit d’une abréviation couramment utilisée. Je ne vois aucune source indiquant explicitement qu’elle ne peut pas être utilisée, mais j’ai trouvé un tableau indiquant les abréviations couramment utilisées pour les sous-arbres du registre Windows 2000, qui sont pour l’essentiel identiques à l’ensemble actuel (à partir de Windows 7). Voici ce que j'ai découvert là-bas:

À partir de la vue d'ensemble du registre pour Windows 2000 (modifié pour le formatage de ce 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

Cette liste est également présentée dans un article de support XP , moins la sous-arborescence Performance Data (qui, je pense, est maintenant partie et que Pankaj / Wikipedia soutient cette idée).

Il existe également la référence de registre Windows , que j'ai liée à la page Clés prédéfinies, qui répertorie les différents sous-arbres, chacun d'entre eux comportant des liens vers leur page spécifique (la plupart d'entre eux accédant aux pages Windows Server 2003 pour une raison quelconque). Ils y énumèrent également les abréviations, qui correspondent à ce qui précède.

Cependant, aucune de ces pages n'indique si les abréviations peuvent être utilisées dans la programmation, ce qui me porte à croire que ce n'est pas explicitement indiqué - mais qu'il s'agit plutôt d'une règle non spécifiée (n'utilisez pas les abréviations si vous n'êtes pas sûr qu'elles fonctionneront). .

Joe
la source