เงื่อนงำที่ใหญ่ที่สุดของคุณเพื่อวัตถุประสงค์และสถานที่ตั้งอยู่ใน "ประเภทใหญ่" เช่นชื่อของลมพิษนั้น: HKLM และ HKCU
การเชื่อมโยงไฟล์ถูกตั้งค่าในลมพิษทั้งสองและมีวัตถุประสงค์ที่แตกต่างกันสองประการ:
ตามชื่อหมายถึงรายการรีจิสทรี HKCU จะตั้งค่าการเชื่อมโยงไฟล์สำหรับ CURRENT USER และแทนที่การตั้งค่าประเภทไฟล์ที่เกี่ยวข้องใน HKLM
HKLM ตั้งค่าการเชื่อมโยงไฟล์สำหรับ LOCAL MACHINE เช่นสำหรับผู้ใช้ทั้งหมดของเครื่อง (เว้นแต่จะถูกแทนที่ด้วยรายการ HKCU) (สำหรับ Win98, HKCR เป็นเพียงนามแฝงสำหรับ HKLM \ Software \ Classes พวกเขาไม่ได้แยกจากกันหรือเป็นลมพิษที่แตกต่างกันอย่างไรก็ตามสิ่งนี้เปลี่ยนไปสำหรับ Win XP และไม่เป็นความจริงอีกต่อไปตอนนี้ HKCR เป็นเสมือนกลุ่มที่เป็นผลมาจากการรวม คีย์ HKLM \ Software \ Classes \, HKCU \ Software \ Classes \, และ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts คีย์พร้อมกับข้อมูล HKCU ที่มีความสำคัญกว่า)
ระบบสองขั้นตอนนี้ไม่เพียงช่วยอำนวยความสะดวกในการเชื่อมต่อไฟล์แบบหนึ่งต่อหนึ่งเท่านั้น ตัวอย่างเช่น. htm, .html และ. shtml filetypes สามารถตั้งค่าเป็น ProgID = htmlfile ซึ่งสามารถกำหนดเบราว์เซอร์เดียวได้ OTOH รายการอาจมีคีย์ย่อยของ OpenWithList หรือ OpenWithProgID ที่มีหลายรายการเพื่อเปิดไฟล์จากรายการเบราว์เซอร์หลาย ๆ ตัวแก้ไขหรือแอพอื่น ๆ
ทั้ง HKLM \ Software \ Classes \ และ HKCU \ Software \ Classes ทำงานในลักษณะเดียวกัน (อันแรกมีความสำคัญมากกว่าอีกอัน) ในรูปแบบที่ง่ายที่สุดจะมีรีจิสตรีคีย์สำหรับนามสกุลไฟล์ (เช่น HKCR.txt) ซึ่งมีค่าเริ่มต้นคือ ProgID ที่สอดคล้องกัน (เช่น txtfile) นอกจากหรือแทนค่าเริ่มต้นอาจมีชื่อ ProgID เพิ่มเติมที่ระบุไว้สำหรับคีย์ย่อย "OpenWithProgID" (เช่น txtfile และ htmlfile) และ / หรือชื่อแอปพลิเคชันเพิ่มเติมปรากฏเป็นคีย์ย่อยภายใต้ "OpenWithList" (เช่น Notepad ++ .exe, Opera.exe, Firefox.exe)
ProgID แต่ละรายการจะถูกกำหนดในคีย์อื่นภายใน HKCR (เช่น HKCR \ txtfile) คีย์นี้ประกอบด้วยคีย์ย่อยเพื่อบอก windows ว่าไอคอนใดที่จะใช้และวิธีการเปิดพิมพ์ปริ้นไฟล์ที่เกี่ยวข้อง ฯลฯ (เช่น, g, HKCR \ txtfile \ shell \ open \ command) ชื่อแอปพลิเคชันแต่ละชื่อจะถูกกำหนดเป็นคีย์ย่อยภายใต้ HKCR \ Applications (เช่น HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ command)
นอกจากคีย์ HKCU \ Software \ Classes แล้วการเชื่อมโยงไฟล์บัญชีผู้ใช้จะอยู่ในคีย์ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts รายการเหล่านี้ไม่ได้มีไว้สำหรับ Windows Explorer เท่านั้นตามที่ได้รับการแนะนำ แต่เป็นแหล่งเพิ่มเติมของการแทนที่การเชื่อมโยงไฟล์บัญชีผู้ใช้ รายการถูกสร้างขึ้นโดยเครื่องมือการเชื่อมโยงไฟล์ใน explorer (Explorer \ Tools \ Folder Options \ File Type) และมี OpenWithList และ / หรือคีย์ย่อย OpenwithProgID สำหรับแต่ละนามสกุลไฟล์ที่ระบุ
ในการพิจารณาความสัมพันธ์ของไฟล์ Windows จะพิจารณารายการ HKCU เป็นอันดับแรกสำหรับส่วนขยายไฟล์ที่เกี่ยวข้อง หากไม่มีใครพบรายการ HKLM จะเข้าสู่การเล่น (หมายเหตุ: ฉันยังไม่ได้ทดสอบที่มีความสำคัญกว่า - HKCU \ Software \ Classes หรือ HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts แต่ฉันสงสัยว่ามันจะเป็นคีย์ FileExts) หากไม่พบ ProgID หรือชื่อแอปพลิเคชันที่อ้างอิงใน HKCU รายการ HKLM จะถูกค้นหา (โปรดทราบว่า \ Applications \ รายการเป็นเพียงชื่อโดยพลการ - แม้ว่าโดยทั่วไปแล้วจะเหมือนกับชื่อจริงในชื่อไฟล์ exe ดิสก์)
ดังนั้นในการกำหนดการเชื่อมโยงไฟล์สำหรับบัญชีผู้ใช้ที่เฉพาะเจาะจงให้สร้างรายการใน HKCU กลุ่ม หากต้องการกำหนดความสัมพันธ์สำหรับผู้ใช้ทั้งหมดให้สร้างรายการใน HKLM hive (HKCR) และลบการอ้างอิงทั้งหมดในกลุ่ม HKCU กับประเภทไฟล์นั้น เห็นได้ชัดว่าคุณต้องการสิทธิ์การเข้าถึงที่เหมาะสมกับรีจิสตรีคีย์
ฉันไม่ได้ใช้เครื่องมือ assoc และ ftype ตามที่ฉันต้องการใช้ RegEdit ในโหมดแบบโต้ตอบหรือแบบแบ็ต แต่จากความคิดเห็นอื่น ๆ ปรากฏว่าพวกเขาทำงานบนรังผึ้ง HKLM เท่านั้นและไม่มีประโยชน์สำหรับการล้าง / ตั้งค่าปุ่ม HKCU ใช้เวลาสักครู่และเรียกดูคีย์ข้างต้นด้วย RegEdit เพื่อดูตัวอย่างเพิ่มเติม