Il tuo più grande indizio su scopo e posizione è nel "tipo grande", cioè i nomi dei rispettivi alveari: HKLM e HKCU
Le associazioni di file sono impostate in entrambi gli hive e hanno due scopi diversi:
Come suggerisce il nome, le voci di registro HKCU impostano le associazioni di file per l'UTENTE ATTUALE e sovrascrivono le impostazioni del tipo di file corrispondenti in HKLM.
HKLM imposta le associazioni di file per la MACCHINA LOCALE, ovvero per TUTTI GLI UTENTI della macchina (a meno che non vengano sovrascritti dalle voci HKCU). (Per Win98, HKCR era solo un alias abbreviato per HKLM \ Software \ Classes. Non erano alveari separati o diversi. Tuttavia, questo è cambiato per Win XP e non è più vero. HKCR è ora un alveare virtuale che è il risultato della fusione le chiavi HKLM \ Software \ Classes \, HKCU \ Software \ Classes \ e HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts con le informazioni HKCU che hanno la precedenza.)
Questo sistema in due fasi facilita non solo gli schemi di associazione dei file uno a uno ma molti a uno e uno a molti. Ad esempio, i tipi di file .htm, .html e .shtml potrebbero essere tutti impostati su ProgID = file html che a sua volta potrebbe definire un singolo browser. OTOH, le voci potrebbero contenere sottochiavi OpenWithList o OpenWithProgID con più voci per aprire un file da un elenco di più browser, editor o altre app.
Sia HKLM \ Software \ Classes \ che HKCU \ Software \ Classes funzionano allo stesso modo (uno ha la precedenza sull'altro). Nella forma più semplice c'è una chiave di registro per un'estensione di file (ad es. HKCR.txt) il cui valore predefinito è il ProgID corrispondente (ad es. Txtfile). Oltre al valore predefinito o al suo posto, potrebbero essere elencati altri nomi ProgID per la sottochiave "OpenWithProgID" (ad es. File txt e file html) e / o nomi di applicazioni aggiuntivi che appaiono come sottochiavi in "OpenWithList" (ad esempio, Blocco note ++ .exe, Opera.exe, Firefox.exe).
Ogni ProgID è definito in un'altra chiave all'interno di HKCR (ad es. HKCR \ txtfile). Questa chiave contiene sottochiavi per indicare a Windows quale icona utilizzare e come aprire, stampare, stampare, ecc. Il file associato (e., G, HKCR \ txtfile \ shell \ open \ command). Allo stesso modo, ogni nome di applicazione viene definito come sottochiave in HKCR \ Applicazioni (ad es. HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ command).
Oltre alla chiave HKCU \ Software \ Classes, le associazioni dei file degli account utente si trovano nella chiave HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts. Queste voci non sono solo per Windows Explorer come è stato suggerito, ma sono un'ulteriore fonte di override dell'associazione dei file degli account utente. Le voci vengono create dagli strumenti di associazione dei file in Explorer (Explorer \ Strumenti \ Opzioni cartella \ Tipi di file) e contengono una sottochiave OpenWithList e / o OpenwithProgID per ciascuna estensione di file elencata.
Per determinare un'associazione di file, Windows esamina innanzitutto le voci HKCU per un'estensione di file corrispondente. Solo se non ne viene trovato uno entrano in gioco le voci HKLM. (Nota: non ho testato quale ha la precedenza: HKCU \ Software \ Classes o HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts ma sospetto che sarebbe la chiave FileExts). Allo stesso modo, se un ProgID o un nome applicazione referenziato non vengono trovati in HKCU, vengono cercate le voci HKLM. (Si noti che \ Applicazioni \ voci sono solo nomi arbitrari, anche se in genere sono identici al nome del file exe effettivo su disco.)
Quindi, per definire un'associazione di file per un account utente specifico, creare voci nell'hive HKCU. Per definire un'associazione per tutti gli utenti, creare voci nell'hive HKLM (HKCR) ed eliminare tutti i riferimenti nell'hive HKCU a quel tipo di file. Ovviamente sono necessari i diritti di accesso appropriati per le chiavi di registro.
Non utilizzo gli strumenti assoc e ftype poiché preferisco usare RegEdit in modalità interattiva o batch, ma da altri commenti sembra che funzionino solo sull'hive HKLM e siano inutili per cancellare / impostare le chiavi HKCU. Prenditi del tempo e sfoglia le chiavi sopra menzionate con RegEdit per vedere altri esempi.