“ HKLM” เป็นชื่อแทนสำหรับ“ HKEY_LOCAL_MACHINE” หรือไม่


61

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

มีการอ้างอิงอ้างว่าพวกเขาจะเทียบเท่าหรือว่าเป็นนามแฝงสำหรับคนอื่น ๆ ? หรือมีกรณีที่ไม่เหมือนกันหรือไม่?

คำตอบ:


79

ไม่แม้ว่า HKLM จะเป็นตัวย่อสำหรับ HKEY_LOCAL_MACHINE แต่ไม่มีคำสั่งอย่างเป็นทางการจาก Microsoft ว่าเทียบเท่าเสมอ ในความเป็นจริงมันระบุอย่างชัดเจนว่าความพร้อมใช้งานของทางลัดเหล่านี้ขึ้นอยู่กับซอฟต์แวร์ที่ใช้และโดยทั่วไปจะเรียกว่า "ตัวย่อที่ใช้กันทั่วไป"

มีหลายกรณีที่ไม่อนุญาตให้ใช้ตัวย่อ HKEY_LOCAL_MACHINE ถึง HKLM ตัวอย่างเช่นเมื่อกำหนดนโยบาย :

มีเงื่อนไขดังต่อไปนี้:

  1. เส้นทางของรีจิสทรีจะต้องอยู่ในเครื่องหมายเปอร์เซ็นต์ (%)
  2. การตั้งค่ารีจิสทรีต้องเป็นประเภท REG_SZ หรือ REG_EXPAND_SZ หากค่ารีจิสทรีมีตัวแปรสภาพแวดล้อมสิ่งเหล่านี้จะถูกขยายเมื่อมีการประเมินนโยบาย
  3. ห้ามใช้ HKLM เป็นตัวย่อสำหรับ HKEY_LOCAL_MACHINE หรือ HKCU เป็นตัวย่อสำหรับ HKEY_CURRENT_USER
  4. กฎเส้นทางรีจิสทรียังสามารถรวมเส้นทางต่อท้าย

(จากเอกสารของนโยบายการ จำกัด ซอฟต์แวร์ความกล้าหาญที่เพิ่มโดยฉัน)


3
นี่คือคำตอบที่ถูกต้อง ชื่อเต็มเป็นชื่อเดียวที่เคอร์เนลสนับสนุน ตัวย่อใด ๆ เป็นเครื่องมือเฉพาะ
Andrew Medico

13
> ระบุอย่างชัดเจนว่าความพร้อมใช้งานของทางลัดเหล่านี้ขึ้นอยู่กับซอฟต์แวร์ที่ใช้และโดยทั่วไปจะเรียกว่า "ตัวย่อที่ใช้กันทั่วไป"มันจะดีมากถ้าคุณสามารถเชื่อมโยงไปยังแหล่งที่มาของสิ่งนั้นได้ (ไม่ใช่ว่าฉันไม่เชื่อใจคุณ แต่แหล่งข้อมูลที่เชื่อถือได้ทำให้การเรียกร้องนั้นแข็งแกร่งขึ้น)
Bob

1
นอกจากนี้คุณไม่สามารถใช้ตัวย่อเหล่านี้ใน.regไฟล์คุณต้องเขียนชื่อเต็มภายในขอบเขตสี่เหลี่ยมที่นั่น

@LightnessRacesinOrbit โปรดแสดงหลักฐานเพื่อพิสูจน์ว่ามันผิด
Andrew Medico

4

ใช่.

HKLM หมายถึง HKEY_LOCAL_MACHINE ตัวแปร

และ HKCU ย่อมาจาก HKEY_CURRENT_USER

พวกเขาเป็นสิ่งเดียวกัน

ตามที่Wikipedia :

มีคีย์รูทที่กำหนดไว้ล่วงหน้าเจ็ดคีย์ซึ่งตั้งชื่อตามการจัดการค่าคงที่ที่กำหนดไว้ใน 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 Registry Editor)
  • HKEY_DYN_DATA (เฉพาะใน Windows 9x และมองเห็นได้ใน Windows Registry Editor)

16
สิ่งนี้บอกว่าพวกเขามีความสามารถทางการเรียกขานเทียบเท่ากัน แต่ไม่ใช่ว่าพวกเขาถูกกำหนดให้เป็นสิ่งเดียวกันหรือนามแฝง โดยเฉพาะ "ขึ้นอยู่กับแอปพลิเคชัน"
Joe Kearney

นอกจากนี้ยังเป็นหน้า Wikipedia ที่ไม่ได้รับการสนับสนุนเป็นส่วนใหญ่ดังนั้นลองคิดดูว่าสิ่งใดที่คุ้มค่า (อาจแม่นยำ แต่ไม่ดีไปกว่าหน้า SO หรือ SU จริงและอาจแย่กว่านั้น)
Joe

แม้ว่าพวกเขาจะเป็นสิ่งเดียวกันตัวย่อไม่ใช่ส่วนหนึ่งของมาตรฐานและดังนั้นจึงไม่เทียบเท่า

4

ฉันจะเพิ่มที่มี PowerShell, HKLM มีอยู่เป็นภูเขาสำหรับ HKEY_LOCAL_MACHINE เช่นนั้นมันไม่แน่นอน ตัวอย่าง

PS> รับรายการ HKLM:
ชื่อคุณสมบัติ
---- --------
HKEY_LOCAL_MACHINE

PS> Remove-PSDrive HKLM

PS> รับรายการ HKLM:
รับรายการ: ไม่พบไดรฟ์ ไม่มีไดรฟ์ที่มีชื่อว่า 'HKLM'

2

ในฐานะที่เป็น Twinkle บันทึกมันเป็นตัวย่อที่ใช้กันทั่วไป ฉันไม่เห็นแหล่งใด ๆ อย่างชัดเจนว่าไม่สามารถใช้งานได้ แต่ฉันพบตารางที่ระบุตัวย่อที่ใช้กันทั่วไปสำหรับทรีย่อยรีจิสทรีของ Windows 2000 ซึ่งส่วนใหญ่เหมือนกับชุดปัจจุบัน (เป็นของ Windows 7) นี่คือสิ่งที่ฉันพบ:

จากภาพรวมรีจิสทรีสำหรับ 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ซึ่งฉันเชื่อมโยงไปยังหน้าคีย์ที่กำหนดไว้ล่วงหน้าซึ่งแสดงรายการ subtrees ต่างๆซึ่งแต่ละอันมีลิงค์ไปยังหน้าเฉพาะของพวกเขา (ส่วนใหญ่ไปที่หน้า Windows Server 2003 ด้วยเหตุผลบางประการ) พวกเขาแสดงรายการตัวย่อที่นั่นเช่นกันซึ่งสอดคล้องกับข้างต้น

ไม่มีหน้าใดที่กล่าวถึงว่าสามารถใช้ตัวย่อในการเขียนโปรแกรมได้หรือไม่ซึ่งทำให้ฉันเชื่อว่าไม่มีการระบุไว้อย่างชัดเจน - แต่เป็นกฎที่ไม่มีการกำหนดมากกว่า (ไม่ใช้ตัวย่อหากคุณไม่แน่ใจว่าจะใช้งานได้หรือไม่) .

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.