「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の公式声明はありません。実際、これらのショートカットの利用可能性は使用されているソフトウェアに依存し、一般に「一般的に使用される略語」と呼ばれることを明示しています。

ときHKLMに略しHKEY_LOCAL_MACHINEは、例えば、許可されていない場合もありますポリシーを定義するには

次の条件が適用されます。

  1. レジストリパスは、パーセント記号(%)で囲む必要があります。
  2. レジストリ設定は、REG_SZまたはREG_EXPAND_SZタイプである必要があります。レジストリ値に環境変数が含まれている場合、ポリシーの評価時にこれらの変数が展開されます。
  3. HKEY_LOCAL_MACHINEの省略形としてHKLMを使用したり、HKEY_CURRENT_USERの省略形としてHKCUを使用しないでください。
  4. レジストリパスルールには、サフィックスパスを含めることもできます。

ソフトウェア制限ポリシーのドキュメントから、私が追加した大胆さ。)


3
これは正解です。カーネルがサポートするのは、フルネームのみです。略語はツール固有です。
アンドリューメディコ

13
>これらのショートカットの利用可能性は使用されているソフトウェアに依存し、一般的に「一般的に使用される略語」と呼ばれることを明示的に述べています。そのためのソースにリンクできたら素晴らしいでしょう。(私はあなたを信用していないわけではありませんが、権威ある情報源が主張を強めています。)
ボブ14年

1
また、あなたがこれらの略語を使用することはできません.regファイル、あなたはそこに正方形のスコープ内の完全な名前を記述する必要があります

@LightnessRacesinOrbit間違っていることを証明する証拠を作成してください。
アンドリューメディコ14年

4

はい。

HKLMはHKEY_LOCAL_MACHINE変数の略です。

また、HKCUはHKEY_CURRENT_USERの略です。

それらは同じものです。

ウィキペディアによると:

7つの事前定義されたルートキーがあり、Win32 APIで定義された定数ハンドルまたは同義の略語(アプリケーションに応じて)に応じて従来から名前が付けられています。

  • 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ページよりも現実的ではなく、さらに悪い場合もあります)。
ジョー14年

それらは同じものですが、略語は標準の一部ではないため、完全に同等ではありません。

4

PowerShellを使用すると、HKLMはHKEY_LOCAL_MACHINEのマウントとして存在するため、変更可能です。例

PS> Get-Item HKLM:
名前プロパティ
---- --------
HKEY_LOCAL_MACHINE

PS> Remove-PSDrive HKLM

PS> Get-Item HKLM:
Get-Item:ドライブが見つかりません。「HKLM」という名前のドライブは存在しません。

2

Twinklesが指摘しているように、これは一般的に使用される略語です。使用できないと明示的に言っているソースはありませんが、Windows 2000レジストリサブツリーの一般的に使用される略語を示す表を見つけました。ここに私が見つけたものがあります:

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 Registry Referenceもあります。PredefinedKeysページにリンクし、さまざまなサブツリーをリストします。各サブツリーには特定のページへのリンクがあります(ほとんどが何らかの理由でWindows Server 2003ページに移動します)。そこには、上記と一致する略語もリストされています。

これらのページのいずれも、略語をプログラミングで使用できるかどうかについては説明していません。そのため、どこにも明示的に記載されていないことを信じさせます-しかし、より多くの無言の規則です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.