Đây có phải là một bí danh của HK HK không phải là một bí danh cho


61

HKLMthường được sử dụng như một từ viết tắt cho HKEY_LOCAL_MACHINE. Hơi bất ngờ điều này cũng có vẻ đúng khi tôi yêu cầu regmột giá trị.

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

Có một tài liệu tham khảo khẳng định rằng chúng là tương đương, hoặc cái này là bí danh cho cái kia? Hoặc trên thực tế, có trường hợp nào chúng không giống nhau không?

Câu trả lời:


79

Không, mặc dù HKLM là tên viết tắt của HKEY_LOCAL_MACHINE, nhưng không có tuyên bố chính thức nào từ Microsoft rằng nó luôn tương đương. Trên thực tế, nó tuyên bố rõ ràng rằng sự sẵn có của các phím tắt này phụ thuộc vào phần mềm đang được sử dụng và chúng thường được gọi là "các chữ viết tắt thường được sử dụng".

Ví dụ, có những trường hợp viết tắt HKEY_LOCAL_MACHINE thành HKLM khi xác định chính sách :

Các điều kiện sau đây được áp dụng:

  1. Đường dẫn đăng ký phải được bao quanh bởi dấu phần trăm (%).
  2. Cài đặt đăng ký phải là loại REG_SZ hoặc REG_EXPAND_SZ. Nếu giá trị đăng ký chứa các biến môi trường, chúng sẽ được mở rộng khi chính sách được ước tính.
  3. Không sử dụng HKLM làm tên viết tắt cho HKEY_LOCAL_MACHINE hoặc HKCU làm tên viết tắt cho HKEY_CURRENT_USER.
  4. Một quy tắc đường dẫn đăng ký cũng có thể bao gồm một đường dẫn hậu tố.

(Từ tài liệu về các chính sách hạn chế phần mềm , sự táo bạo được thêm vào bởi tôi.)


3
Đây là câu trả lời chính xác. Tên đầy đủ là những cái duy nhất được hỗ trợ bởi kernel. Bất kỳ chữ viết tắt là cụ thể công cụ.
Andrew Medico

13
> nó tuyên bố rõ ràng rằng sự sẵn có của các phím tắt này phụ thuộc vào phần mềm đang được sử dụng và chúng thường được gọi là "các chữ viết tắt thường được sử dụng" Thật tuyệt nếu bạn có thể liên kết với một nguồn cho điều đó. (Không phải tôi không tin bạn, nhưng một nguồn có thẩm quyền làm cho yêu sách trở nên mạnh mẽ hơn.)
Bob

1
ngoài ra, bạn không thể sử dụng các chữ viết tắt này trong .regcác tệp, bạn phải viết tên đầy đủ bên trong phạm vi hình vuông ở đó

@LightnessRacesinOrbit Hãy thoải mái đưa ra một số bằng chứng chứng minh nó sai.
Andrew Medico

4

Đúng.

HKLM là viết tắt của Biến HKEY_LOCAL_MACHINE.

Và HKCU là viết tắt của HKEY_CURRENT_USER.

Họ là những điều tương tự.

Theo Wikipedia :

Có bảy khóa gốc được xác định trước, được đặt tên theo truyền thống theo các thẻ điều khiển không đổi được xác định trong API Win32 hoặc bằng các chữ viết tắt đồng nghĩa (tùy thuộc vào ứng dụng):

  • HKEY_LOCAL_MACHINE hoặc HKLM
  • HKEY_CURRENT_CONFIG hoặc HKCC (chỉ trong Windows 9x và NT)
  • HKEY_CLASSES_ROOT hoặc HKCR
  • HKEY_CURRENT_USER hoặc HKCU
  • HKEY_USERS hoặc HKU
  • HKEY_PERFORMANCE_DATA (chỉ trong Windows NT, nhưng không hiển thị trong Windows Registry Editor)
  • HKEY_DYN_DATA (chỉ trong Windows 9x và hiển thị trong Windows Registry Editor)

16
Điều này nói rằng chúng tương đương về mặt thông tục, nhưng không phải là chúng được định nghĩa là cùng một thứ hoặc bí danh; đặc biệt "tùy thuộc vào ứng dụng".
Joe Kearney

Đây cũng là một trang Wikipedia hầu như không được quản lý, vì vậy hãy xem nó có giá trị gì (có thể chính xác nhưng không tốt hơn trang SO hoặc SU một cách thực tế, và có lẽ tệ hơn).
Joe

Mặc dù chúng là cùng một thứ, chữ viết tắt không phải là một phần của tiêu chuẩn và do đó không hoàn toàn tương đương.

4

Tôi sẽ thêm rằng với PowerShell, HKLM tồn tại dưới dạng gắn kết cho HKEY_LOCAL_MACHINE, vì vậy nó có thể thay đổi. Thí dụ

PS> Nhận vật phẩm HKLM:
Tên tài sản
---- --------
HKEY_LOCAL_MACHINE

PS> Xóa-PSDrive HKLM

PS> Nhận vật phẩm HKLM:
Get-Item: Không thể tìm thấy ổ đĩa. Một ổ đĩa có tên 'HKLM' không tồn tại.

2

Như Twinkles lưu ý, nó là một từ viết tắt thường được sử dụng. Tôi không thấy bất kỳ nguồn nào nói rõ rằng nó không thể được sử dụng, nhưng tôi đã tìm thấy một bảng chỉ ra các chữ viết tắt thường được sử dụng cho các bản ghi sổ đăng ký Windows 2000, hầu hết giống với bộ hiện tại (Kể từ Windows 7). Đây là những gì tôi tìm thấy ở đó:

Từ Tổng quan về Sổ đăng ký cho Windows 2000 (được sửa đổi để định dạng cho trang web này):

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

Danh sách đó cũng được trình bày trong một bài viết hỗ trợ XP , trừ đi cây con Dữ liệu hiệu suất (mà tôi nghĩ bây giờ đã biến mất và Pankaj / Wikipedia hỗ trợ suy nghĩ đó).

Ngoài ra còn có Tài liệu tham khảo Windows , mà tôi đã liên kết với trang Khóa được xác định trước, liệt kê các loại cây con khác nhau, mỗi loại có liên kết đến trang cụ thể của chúng (hầu hết đều đi đến trang Windows Server 2003 vì một số lý do). Họ liệt kê các chữ viết tắt ở đó, phù hợp với ở trên.

Tuy nhiên, không có trang nào trong số này thảo luận về việc liệu các chữ viết tắt có thể được sử dụng trong lập trình hay không, điều này khiến tôi tin rằng không được nêu rõ ràng ở bất cứ đâu - nhưng đó là một quy tắc không có căn cứ (không sử dụng các từ viết tắt nếu bạn không chắc chúng sẽ hoạt động) .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.