windows – “HKLM “は “HKEY_LOCAL_MACHINE “のエイリアスですか?

windows windows-registry

HKLMHKEY_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

両者が同等であることを主張する文献や、一方が他方の別名であることを主張する文献はあるのでしょうか?それとも、実際には同じものではない場合もあるのでしょうか?

  61  Joe Kearney  2014-10-08


ベストアンサー

いいえ、HKLMはHKEY_LOCAL_MACHINEの略語ですが、常に同等であるというMicrosoftの公式声明はありません。実際には、これらのショートカットの利用可能性は使用するソフトウェアに依存すると明示的に述べており、一般的には「一般的に使用される略語」と呼ばれています

ポリシーを定義する場合など、HKEY_LOCAL_MACHINE を HKLM に省略することが許されない場合があります

以下の条件に該当します

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

(ソフトウェア制限ポリシーのドキュメントより、私が大胆に追加しました)

79  Twinkles  2014-10-08


Yes.

HKLM は HKEY_LOCAL_MACHINE 変数の略です

そしてHKCUはHKEY_CURRENT_USERの略です

それらは同じものです

Wikipediaによると、以下のようになっています

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 レジストリエディタで表示されます)

4  Kunal  2014-10-08


PowerShell の場合、HKLM は HKEY_LOCAL_MACHINE のマウントとして存在しており、そのようなマウントは変更可能であることを付け加えておきます。例

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

PS > Remove-PSDrive HKLM

PS > Get-Item HKLM:
Get-Item : Cannot find drive. A drive with the name 'HKLM' does not exist.

3  Steven Penny  2014-10-10


Twinklesさんが指摘しているように、これは一般的に使われている略語です。使えないと明記されているソースは見当たりませんが、Windows 2000のレジストリサブツリーでよく使われている略語を示す表を見つけました。そこで見つけたのが以下の通りです

Registry Overview for 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 サポートの記事でも紹介されていますが、パフォーマンスデータのサブツリーを除いたものです

また、Windows レジストリリファレンス のページにリンクした Windows レジストリリファレンス もあり、これにはさまざまなサブツリーが一覧表示されています。彼らはそこにも略語をリストアップしており、上記と一致しています

しかし、これらのページのどれも、略語がプログラミングで使えるかどうかについては触れていませんが、これはどこにも明記されていません

2  Joe  2014-10-10


タイトルとURLをコピーしました