Apakah "HKLM" adalah alias untuk "HKEY_LOCAL_MACHINE"?

61

HKLMsering digunakan sebagai singkatan untuk HKEY_LOCAL_MACHINE. Agak tak terduga ini juga tampaknya benar ketika saya meminta regnilai.

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

Apakah ada referensi yang menyatakan bahwa mereka setara, atau yang satu adalah alias untuk yang lain? Atau ada, pada kenyataannya, kasus di mana mereka tidak hal yang sama?

Joe Kearney
sumber

Jawaban:

79

Tidak, meskipun HKLM adalah kependekan dari HKEY_LOCAL_MACHINE, tidak ada pernyataan resmi dari Microsoft bahwa itu selalu setara. Bahkan, secara eksplisit menyatakan bahwa ketersediaan cara pintas ini tergantung pada perangkat lunak yang digunakan dan mereka umumnya disebut sebagai "singkatan yang biasa digunakan".

Ada kasus di mana menyingkat HKEY_LOCAL_MACHINE ke HKLM tidak diizinkan, misalnya saat mendefinisikan kebijakan :

Ketentuan berikut berlaku:

  1. Jalur registri harus dilampirkan oleh tanda persen (%).
  2. Pengaturan registri harus tipe REG_SZ atau REG_EXPAND_SZ. Jika nilai registri berisi variabel lingkungan, ini akan diperluas ketika kebijakan dievaluasi.
  3. Jangan gunakan HKLM sebagai singkatan untuk HKEY_LOCAL_MACHINE, atau HKCU sebagai singkatan untuk HKEY_CURRENT_USER.
  4. Aturan lintasan registri juga dapat menyertakan lintasan sufiks.

(Dari dokumentasi kebijakan pembatasan Perangkat Lunak , keberanian ditambahkan oleh saya.)

Twinkles
sumber
3
Ini jawaban yang benar. Nama lengkap adalah satu-satunya yang didukung oleh kernel. Singkatan apa pun adalah khusus alat.
Andrew Medico
13
> itu secara eksplisit menyatakan bahwa ketersediaan pintasan ini tergantung pada perangkat lunak yang digunakan dan umumnya disebut sebagai "singkatan yang biasa digunakan" Akan lebih bagus jika Anda dapat menautkan ke sumber untuk itu. (Bukannya saya tidak mempercayai Anda, tetapi sumber yang otoritatif membuat klaim lebih kuat.)
Bob
1
Anda juga tidak dapat menggunakan singkatan ini dalam .regfile, Anda harus menulis nama lengkap di dalam cakupan kotak di sana
@LightnessRacesinOrbit Merasa bebas untuk menghasilkan beberapa bukti yang membuktikannya salah.
Andrew Medico
4

Iya.

HKLM adalah singkatan dari HKEY_LOCAL_MACHINE Variable.

Dan HKCU adalah singkatan dari HKEY_CURRENT_USER.

Mereka adalah hal yang sama.

Menurut Wikipedia :

Ada tujuh kunci root yang telah ditentukan, secara tradisional dinamai sesuai dengan pegangan konstan mereka yang didefinisikan dalam Win32 API, atau dengan singkatan sinonim (tergantung pada aplikasi):

  • HKEY_LOCAL_MACHINE atau HKLM
  • HKEY_CURRENT_CONFIG atau HKCC (hanya di Windows 9x dan NT)
  • HKEY_CLASSES_ROOT atau HKCR
  • HKEY_CURRENT_USER atau HKCU
  • HKEY_USERS atau HKU
  • HKEY_PERFORMANCE_DATA (hanya di Windows NT, tetapi tidak terlihat di Windows Registry Editor)
  • HKEY_DYN_DATA (hanya di Windows 9x, dan terlihat di Windows Registry Editor)
Kunal
sumber
16
Ini mengatakan bahwa mereka setara bahasa sehari-hari, tetapi tidak bahwa mereka didefinisikan sebagai hal yang sama atau alias; khususnya "tergantung pada aplikasi".
Joe Kearney
Ini juga merupakan halaman Wikipedia yang sebagian besar tidak bersumber daya, jadi anggap itu layak (mungkin akurat tetapi tidak lebih baik daripada halaman SO atau SU secara realistis, dan mungkin lebih buruk).
Joe
Meskipun mereka adalah hal yang sama, singkatan bukan bagian dari standar dan karenanya tidak murni setara.
4

Saya akan menambahkan bahwa dengan PowerShell, HKLM ada sebagai mount untuk HKEY_LOCAL_MACHINE, karena itu bisa berubah. Contoh

PS> Dapatkan-Item HKLM:
Nama Properti
---- --------
HKEY_LOCAL_MACHINE

PS> Hapus-PSDrive HKLM

PS> Dapatkan-Item HKLM:
Get-Item: Tidak dapat menemukan drive. Drive dengan nama 'HKLM' tidak ada.
Steven Penny
sumber
2

Seperti yang dicatat Twinkles, itu adalah singkatan yang umum digunakan. Saya tidak melihat sumber yang secara eksplisit mengatakan itu tidak dapat digunakan, tapi saya menemukan sebuah tabel yang menunjukkan singkatan yang biasa digunakan untuk subkunci registri Windows 2000, yang sebagian besar sama dengan set saat ini (As of Windows 7). Inilah yang saya temukan di sana:

Dari Ikhtisar Registri untuk Windows 2000 (dimodifikasi untuk memformat situs ini):

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

Daftar itu disajikan dalam artikel dukungan XP juga, minus subtree Data Kinerja (yang saya pikir sekarang hilang dan Pankaj / Wikipedia mendukung pemikiran itu).

Ada juga Referensi Registri Windows , yang saya tautkan ke halaman Kunci yang Ditentukan sebelumnya, yang mencantumkan berbagai subpohon, yang masing-masing memiliki tautan ke halaman spesifik mereka (sebagian besar menuju halaman Windows Server 2003 karena beberapa alasan). Mereka mencantumkan singkatan di sana juga, yang konsisten dengan yang di atas.

Tidak satu pun dari halaman ini membahas apakah singkatan dapat digunakan dalam pemrograman, yang membuat saya percaya bahwa tidak secara eksplisit dinyatakan di mana saja - tetapi lebih merupakan aturan yang tidak disebutkan (jangan menggunakan singkatan jika Anda tidak yakin mereka akan bekerja) .

Joe
sumber