====== HKCR (HKEY_CLASSES_ROOT) ======
**HKCR** je zkratka pro **HKEY_CLASSES_ROOT**, což je jeden ze základních kořenových klíčů (tzv. *hive*) v registru operačního systému **Microsoft Windows**.
===== Co je HKCR? =====
Registrační klíč **HKEY_CLASSES_ROOT** slouží k ukládání informací o:
* Asociacích souborových přípon (např. `.txt`, `.docx`)
* Typu dokumentu (tzv. **ProgID** – Programmatic Identifier, např. `txtfile`, `Word.Document.12`)
* Třídách COM objektů (Component Object Model)
* Kontextových nabídkách pro soubory a složky
* Ikonech a popisech typů souborů
===== Interní struktura =====
Technicky vzato **HKCR není samostatným fyzickým klíčem** v registru. Jedná se o **virtuální pohled** (alias) na data uložená v jiných částech registru:
* **Prioritně** ukazuje na **HKEY_CURRENT_USER\Software\Classes**
* Pokud daný záznam v uživatelském profilu neexistuje, přistupuje k **HKEY_LOCAL_MACHINE\Software\Classes**
Tímto způsobem Windows umožňuje uživatelům přepsat systémové asociace souborů svými vlastními nastaveními.
===== Příklady použití =====
* **Přiřazení programu ke spuštění při dvojkliku na .log soubor:**
HKCR\.log
(výchozí) = "txtfile"
HKCR\txtfile\shell\open\command
(výchozí) = "C:\Windows\notepad.exe %1"
* **Registrace vlastního typu souboru:**
HKCR\.myext
(výchozí) = "MyApp.Document"
HKCR\MyApp.Document
(výchozí) = "Můj vlastní dokument"
HKCR\MyApp.Document\DefaultIcon
(výchozí) = "C:\Program Files\MyApp\icon.ico"
===== Důležité poznámky =====
* Úprava registru může vést k nestabilitě systému – vždy je doporučeno zálohovat registr před zásahem.
* Na systémech s více uživateli se změny v **HKCR** projeví pouze pro aktuálního uživatele, pokud nejsou provedeny v **HKLM\Software\Classes**.
* V aplikacích je často vhodnější používat **assoc** a **ftype** příkazy v příkazovém řádku nebo rozhraní API Windows (např. `SHOpenWithDialog`) místo přímé manipulace s registrem.
===== Související klíče v registru =====
* **HKEY_CURRENT_USER (HKCU)** – nastavení aktuálního uživatele
* **HKEY_LOCAL_MACHINE (HKLM)** – globální nastavení celého počítače
* **HKEY_CLASSES_ROOT (HKCR)** – kombinace HKCU a HKLM pro asociace souborů a COM třídy