Manh mối lớn nhất của bạn về mục đích và vị trí nằm trong "loại lớn", nghĩa là tên của các tổ ong tương ứng: HKLM và HKCU
Liên kết tệp được đặt trong cả hai tổ ong và có hai mục đích khác nhau:
Như tên ngụ ý, các mục đăng ký HKCU thiết lập các liên kết tệp cho NGƯỜI DÙNG HIỆN TẠI và ghi đè cài đặt loại tệp tương ứng trong HKLM.
HKLM thiết lập các liên kết tệp cho MÁY ĐỊA PHƯƠNG, nghĩa là, đối với TẤT CẢ NGƯỜI SỬ DỤNG của máy (trừ khi bị ghi đè bởi các mục HKCU). (Đối với Win98, HKCR chỉ là bí danh viết tắt của HKLM \ Software \ Classes. Chúng không tách rời hoặc khác nhau. Tuy nhiên, điều này đã thay đổi đối với Win XP và không còn đúng nữa. HKCR giờ đây là một tổ ong ảo là kết quả của việc hợp nhất các khóa HKLM \ Software \ Classes \, HKCU \ Software \ Classes \ và HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts với thông tin HKCU được ưu tiên.)
Hệ thống hai bước này tạo điều kiện thuận lợi không chỉ cho một-một mà nhiều chương trình liên kết tệp một-nhiều và một-nhiều. Ví dụ: các loại tệp .htm, .html và .shtml đều có thể được đặt thành ProgID = htmlfile, từ đó có thể xác định một trình duyệt duy nhất. OTOH, các mục có thể chứa các khóa con OpenWithList hoặc OpenWithProgID với nhiều mục để mở tệp từ danh sách nhiều trình duyệt, trình soạn thảo hoặc ứng dụng khác.
Cả HKLM \ Software \ Classes \ và HKCU \ Software \ Classes đều hoạt động theo cùng một cách (cái này chỉ được ưu tiên hơn cái kia). Ở dạng đơn giản nhất, có khóa đăng ký cho phần mở rộng tệp (ví dụ: HKCR.txt) có giá trị mặc định là ProgID tương ứng (ví dụ: txtfile). Ngoài, hoặc thay vì giá trị mặc định, có thể có thêm các tên ProgID được liệt kê cho khóa con "OpenWithProgID" (ví dụ: txtfile và htmlfile) và / hoặc các tên ứng dụng bổ sung xuất hiện dưới dạng các khóa con trong "OpenWithList" (ví dụ: Notepad ++ .exe, Opera.exe, Firefox.exe).
Mỗi ProgID được xác định trong một khóa khác trong HKCR (ví dụ: HKCR \ txtfile). Khóa này chứa các khóa con để báo cho windows biết sử dụng biểu tượng nào và cách mở, in, in, v.v. tập tin liên quan (e., G, HKCR \ txtfile \ shell \ open \ lệnh). Tương tự, mỗi tên ứng dụng được định nghĩa là một khóa con trong HKCR \ Application (ví dụ: HKEY_CLASSES_ROOT \ Application \ Firefox.exe \ shell \ open \ lệnh).
Ngoài khóa HKCU \ Software \ Classes, các liên kết tệp tài khoản người dùng được tìm thấy trong khóa HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts. Các mục này không chỉ dành cho Windows Explorer như đã được đề xuất mà là một nguồn bổ sung của ghi đè tệp tài khoản người dùng. Các mục nhập được tạo bởi các công cụ liên kết tệp trong explorer (Explorer \ Tools \ Directory Options \ File Type) và chứa OpenWithList và / hoặc một khóa con OpenwithProgID cho mỗi phần mở rộng tệp được liệt kê.
Để xác định liên kết tệp, Windows trước tiên nhìn vào các mục HKCU cho phần mở rộng tệp tương ứng. Chỉ khi không tìm thấy thì các mục HKLM mới được sử dụng. (Lưu ý: Tôi chưa kiểm tra được ưu tiên - HKCU \ Software \ Classes hoặc HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts nhưng tôi nghi ngờ đó sẽ là khóa FileExts). Tương tự, nếu không tìm thấy ProgID hoặc tên ứng dụng được tham chiếu trong HKCU, các mục HKLM được tìm kiếm. (Lưu ý rằng các mục \ Ứng dụng \ chỉ là tên tùy ý - mặc dù chúng thường giống hệt với tên tệp exe thực tế trên đĩa.)
Vì vậy, để xác định liên kết tệp cho một tài khoản người dùng cụ thể, hãy tạo các mục trong tổ hợp HKCU. Để xác định liên kết cho tất cả người dùng, hãy tạo các mục trong tổ hợp HKLM (HKCR) và xóa tất cả các tham chiếu trong tổ hợp HKCU cho loại tệp đó. Rõ ràng bạn cần quyền truy cập thích hợp vào các khóa registry.
Tôi không sử dụng các công cụ hỗ trợ và ftype vì tôi thích sử dụng RegEdit ở chế độ tương tác hoặc theo đợt nhưng từ các bình luận khác, có vẻ như chúng chỉ hoạt động trên tổ ong HKLM và vô dụng để xóa / cài đặt các khóa HKCU. Dành chút thời gian và duyệt các phím đã nói ở trên với RegEdit để xem thêm các ví dụ.