Votre plus grand indice sur le but et l'emplacement est dans le "grand type", c'est-à-dire les noms des ruches respectives: HKLM et HKCU
Les associations de fichiers sont définies dans les deux ruches et ont deux objectifs différents:
Comme son nom l'indique, les entrées de registre HKCU définissent les associations de fichiers pour l'UTILISATEUR ACTUEL et remplacent les paramètres de type de fichier correspondants dans HKLM.
HKLM définit les associations de fichiers pour la MACHINE LOCALE, c'est-à-dire pour TOUS LES UTILISATEURS de la machine (sauf si écrasé par les entrées HKCU). (Pour Win98, HKCR n'était qu'un alias abrégé pour HKLM \ Software \ Classes. Ce n'étaient pas des ruches distinctes ou différentes. Cependant, cela a changé pour Win XP et n'est plus vrai. HKCR est maintenant une ruche virtuelle qui est le résultat de la fusion les clés HKLM \ Software \ Classes \, HKCU \ Software \ Classes \ et HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts, les informations HKCU étant prioritaires.)
Ce système en deux étapes facilite non seulement les schémas d'association de fichiers un-à-un mais plusieurs-à-un et un-à-plusieurs. Par exemple, les types de fichiers .htm, .html et .shtml peuvent tous être définis sur ProgID = htmlfile, qui à son tour pourrait définir un seul navigateur. OTOH, les entrées peuvent contenir des sous-clés OpenWithList ou OpenWithProgID avec plusieurs entrées pour ouvrir un fichier à partir d'une liste de plusieurs navigateurs, éditeurs ou autres applications.
HKLM \ Software \ Classes \ et HKCU \ Software \ Classes fonctionnent de la même manière (l'un a juste priorité sur l'autre). Dans la forme la plus simple, il existe une clé de registre pour une extension de fichier (par exemple, HKCR.txt) dont la valeur par défaut est le ProgID correspondant (par exemple, txtfile). En plus ou à la place de la valeur par défaut, il peut y avoir des noms ProgID supplémentaires répertoriés pour la sous-clé "OpenWithProgID" (par exemple, txtfile et htmlfile), et / ou des noms d'application supplémentaires apparaissant comme sous-clés sous "OpenWithList" (par exemple, le bloc-notes ++ .exe, Opera.exe, Firefox.exe).
Chaque ProgID est défini dans une autre clé dans HKCR (par exemple, HKCR \ txtfile). Cette clé contient des sous-clés pour indiquer à Windows quelle icône utiliser et comment ouvrir, imprimer, imprimer dans, etc. le fichier associé (par exemple, g, HKCR \ txtfile \ shell \ open \ command). De même, chaque nom d'application est défini comme une sous-clé sous HKCR \ Applications (par exemple, HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ command).
Outre la clé HKCU \ Software \ Classes, les associations de fichiers de compte d'utilisateur se trouvent dans la clé HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts. Ces entrées ne sont pas uniquement destinées à l'Explorateur Windows, comme cela a été suggéré, mais constituent une source supplémentaire de remplacements d'association de fichiers de compte d'utilisateur. Les entrées sont créées par les outils d'association de fichiers dans l'explorateur (Explorer \ Tools \ Folder Options \ File Types) et contiennent une sous-clé OpenWithList et / ou OpenwithProgID pour chaque extension de fichier répertoriée.
Pour déterminer une association de fichiers, Windows examine d'abord les entrées HKCU pour une extension de fichier correspondante. Ce n'est que si aucun n'est trouvé que les entrées HKLM entrent en jeu. (Remarque: je n'ai pas testé ce qui a la priorité - HKCU \ Software \ Classes ou HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts mais je soupçonne que ce serait la clé FileExts). De même, si un ProgID référencé ou un nom d'application n'est pas trouvé dans HKCU, les entrées HKLM sont recherchées. (Notez que les entrées \ Applications \ ne sont que des noms arbitraires - même si elles sont généralement identiques au nom de fichier exe sur le disque.)
Donc, pour définir une association de fichiers pour un compte d'utilisateur spécifique, créez des entrées dans la ruche HKCU. Pour définir une association pour tous les utilisateurs, créez des entrées dans la ruche HKLM (HKCR) et supprimez toutes les références dans la ruche HKCU à ce type de fichier. De toute évidence, vous avez besoin des droits d'accès appropriés aux clés de registre.
Je n'utilise pas les outils assoc et ftype car je préfère utiliser RegEdit en mode interactif ou batch, mais d'après d'autres commentaires, il semble qu'ils ne fonctionnent que sur la ruche HKLM et ne sont pas utiles pour effacer / définir les clés HKCU. Prenez du temps et parcourez les clés susmentionnées avec RegEdit pour voir plus d'exemples.