Najważniejszą wskazówką dotyczącą celu i lokalizacji jest „duży typ”, tzn. Nazwy odpowiednich uli: HKLM i HKCU
Powiązania plików są ustawione w obu ulach i mają dwa różne cele:
Jak sama nazwa wskazuje, wpisy rejestru HKCU ustawiają powiązania plików dla BIEŻĄCEGO UŻYTKOWNIKA i zastępują odpowiednie ustawienia typu pliku w HKLM.
HKLM ustawia skojarzenia plików dla LOCAL MACHINE, tj. Dla WSZYSTKICH UŻYTKOWNIKÓW maszyny (chyba że zostaną zastąpione wpisami HKCU). (Dla Win98 HKCR był tylko skrótem dla HKLM \ Software \ Classes. Nie były to oddzielne lub różne ule. Jednak zmieniło się to dla Win XP i nie jest już prawdą. HKCR jest teraz wirtualnym ulem, który jest wynikiem połączenia klucze HKLM \ Software \ Classes \, HKCU \ Software \ Classes \ oraz HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts z pierwszeństwem informacji HKCU.)
Ten dwustopniowy system ułatwia nie tylko schematy asocjacji plików jeden do jednego, ale także wiele do jednego i jeden do wielu. Na przykład typy plików .htm, .html i .shtml można ustawić na ProgID = plik html, co z kolei może definiować pojedynczą przeglądarkę. OTOH, wpisy mogą zawierać podklucz OpenWithList lub OpenWithProgID z wieloma wpisami, aby otworzyć plik z listy wielu przeglądarek, edytorów lub innych aplikacji.
Zarówno HKLM \ Software \ Classes \, jak i HKCU \ Software \ Classes działają w ten sam sposób (jeden ma pierwszeństwo przed drugim). W najprostszej postaci istnieje klucz rejestru dla rozszerzenia pliku (np. HKCR.txt), którego wartością domyślną jest odpowiedni ProgID (np. Plik txt). Oprócz lub zamiast wartości domyślnej mogą być wymienione dodatkowe nazwy ProgID dla podklucza „OpenWithProgID” (np. Txtfile i htmlfile) i / lub dodatkowe nazwy aplikacji pojawiające się jako podklucze w „OpenWithList” (np. Notepad ++ .exe, Opera.exe, Firefox.exe).
Każdy ProgID jest zdefiniowany w innym kluczu w HKCR (np. HKCR \ txtfile). Ten klucz zawiera podklucze, które informują system Windows, której ikony użyć i jak otworzyć, wydrukować, wydrukować itp. Skojarzony plik (np. G, HKCR \ txtfile \ shell \ open \ polecenie). Podobnie każda nazwa aplikacji jest zdefiniowana jako podklucz w HKCR \ Applications (np. HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ command).
Oprócz klucza HKCU \ Software \ Classes skojarzenia plików kont użytkowników znajdują się w kluczu HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts. Te wpisy nie dotyczą tylko Eksploratora Windows, jak sugerowano, ale stanowią dodatkowe źródło nadpisań powiązań plików kont użytkowników. Wpisy tworzone są za pomocą narzędzi do łączenia plików w eksploratorze (Explorer \ Tools \ Folder Options \ Typy plików) i zawierają podklucz OpenWithList i / lub OpenwithProgID dla każdego wymienionego rozszerzenia pliku.
Aby ustalić powiązanie pliku, system Windows najpierw sprawdza wpisy HKCU w poszukiwaniu odpowiedniego rozszerzenia pliku. Tylko jeśli nie zostanie znaleziony, wpisy HKLM wchodzą do gry. (Uwaga: nie testowałem, który ma pierwszeństwo - HKCU \ Software \ Classes lub HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts, ale podejrzewam, że będzie to klucz FileExts). Podobnie, jeśli w HKCU nie znaleziono odnośnika ProgID lub nazwy aplikacji, wyszukiwane są wpisy HKLM. (Zauważ, że wpisy \ Aplikacje \ są po prostu dowolną nazwą - mimo że zazwyczaj są identyczne z rzeczywistą nazwą pliku exe na dysku).
Aby zdefiniować powiązanie pliku dla określonego konta użytkownika, utwórz wpisy w gałęzi HKCU. Aby zdefiniować powiązanie dla wszystkich użytkowników, utwórz wpisy w gałęzi HKLM (HKCR) i usuń wszystkie odwołania w gałęzi HKCU do tego typu pliku. Oczywiście potrzebujesz odpowiednich praw dostępu do kluczy rejestru.
Nie używam narzędzi assoc i ftype, ponieważ wolę używać RegEdit w trybie interaktywnym lub wsadowym, ale z innych komentarzy wynika, że działają one tylko w gałęzi HKLM i są bezużyteczne do czyszczenia / ustawiania kluczy HKCU. Poświęć trochę czasu i przejrzyj wyżej wymienione klucze za pomocą RegEdit, aby zobaczyć więcej przykładów.