Ihr größter Anhaltspunkt für Zweck und Standort ist der "große Typ", dh die Namen der jeweiligen Bienenstöcke: HKLM und HKCU
Dateizuordnungen werden in beiden Strukturen festgelegt und haben zwei unterschiedliche Zwecke:
Wie der Name schon sagt, legen die HKCU-Registrierungseinträge die Dateizuordnungen für den CURRENT USER fest und überschreiben die entsprechenden Dateitypeinstellungen in HKLM.
HKLM legt die Dateizuordnungen für die LOKALE MASCHINE fest, dh für ALLE BENUTZER der Maschine (sofern nicht durch HKCU-Einträge überschrieben). (Für Win98 war HKCR nur eine Abkürzung für HKLM \ Software \ Classes. Es handelte sich nicht um separate oder unterschiedliche Strukturen. Dies änderte sich jedoch für Win XP und ist nicht mehr zutreffend. HKCR ist jetzt eine virtuelle Struktur, die das Ergebnis der Zusammenführung ist die Schlüssel HKLM \ Software \ Classes \, HKCU \ Software \ Classes \ und HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts, wobei die HKCU-Informationen Vorrang haben.)
Dieses zweistufige System erleichtert nicht nur Eins-zu-Eins-, sondern auch Viele-zu-Eins- und Eins-zu-Viele-Dateizuordnungsschemata. Beispielsweise könnten die Dateitypen .htm, .html und .shtml auf ProgID = htmlfile gesetzt werden, was wiederum einen einzelnen Browser definieren könnte. OTOH, die Einträge können OpenWithList- oder OpenWithProgID-Unterschlüssel mit mehreren Einträgen enthalten, um eine Datei aus einer Liste mehrerer Browser, Editoren oder anderer Apps zu öffnen.
Sowohl HKLM \ Software \ Classes \ als auch HKCU \ Software \ Classes arbeiten auf die gleiche Weise (eine hat nur Vorrang vor der anderen). In der einfachsten Form gibt es einen Registrierungsschlüssel für eine Dateierweiterung (z. B. HKCR.txt), dessen Standardwert die entsprechende ProgID (z. B. txtfile) ist. Zusätzlich oder anstelle des Standardwerts werden möglicherweise zusätzliche ProgID-Namen für den Unterschlüssel "OpenWithProgID" (z. B. txtfile und htmlfile) und / oder zusätzliche Anwendungsnamen aufgeführt, die als Unterschlüssel unter "OpenWithList" (z. B. Notepad ++) angezeigt werden .exe, Opera.exe, Firefox.exe).
Jede ProgID ist in einem anderen Schlüssel in HKCR definiert (z. B. HKCR \ txtfile). Dieser Schlüssel enthält Unterschlüssel, die Windows mitteilen, welches Symbol verwendet werden soll und wie die zugehörige Datei geöffnet, gedruckt, gedruckt usw. werden soll (z. B. HKCR \ txtfile \ shell \ open \ command). In ähnlicher Weise wird jeder Anwendungsname unter HKCR \ Applications als Unterschlüssel definiert (z. B. HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ command).
Neben dem Schlüssel HKCU \ Software \ Classes befinden sich Dateizuordnungen für Benutzerkonten im Schlüssel HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts. Diese Einträge gelten nicht nur für den Windows Explorer, wie vorgeschlagen, sondern sind eine zusätzliche Quelle für das Überschreiben der Dateizuordnung für Benutzerkonten. Die Einträge werden von den Dateizuordnungstools im Explorer (Explorer \ Tools \ Folder Options \ File Types) erstellt und enthalten für jede aufgelistete Dateierweiterung einen OpenWithList- und / oder einen OpenwithProgID-Unterschlüssel.
Um eine Dateizuordnung zu ermitteln, sucht Windows zunächst in den HKCU-Einträgen nach einer entsprechenden Dateierweiterung. Nur wenn einer nicht gefunden wird, kommen die HKLM-Einträge ins Spiel. (Hinweis: Ich habe nicht getestet, welche Priorität hat - HKCU \ Software \ Classes oder HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts, aber ich vermute, es wäre der FileExts-Schlüssel). Wenn in der HKCU keine referenzierte ProgID oder kein Anwendungsname gefunden wird, werden die HKLM-Einträge ebenfalls durchsucht. (Beachten Sie, dass \ Applications \ -Einträge nur ein beliebiger Name sind - obwohl sie normalerweise mit dem tatsächlichen Namen der exe-Datei auf der Festplatte identisch sind.)
Um eine Dateizuordnung für ein bestimmtes Benutzerkonto zu definieren, erstellen Sie Einträge in der HKCU-Struktur. Um eine Zuordnung für alle Benutzer zu definieren, erstellen Sie Einträge in der HKLM-Struktur (HKCR) und löschen Sie alle Verweise in der HKCU-Struktur auf diesen Dateityp. Natürlich benötigen Sie die entsprechenden Zugriffsrechte auf die Registrierungsschlüssel.
Ich verwende die Tools assoc und ftype nicht, da ich RegEdit entweder im interaktiven oder im Batch-Modus bevorzuge, aber aus anderen Kommentaren geht hervor, dass sie nur im HKLM-Hive ausgeführt werden und zum Löschen / Setzen von HKCU-Schlüsseln unbrauchbar sind. Nehmen Sie sich etwas Zeit und durchsuchen Sie die oben genannten Schlüssel mit RegEdit, um weitere Beispiele zu sehen.