Wszystkie informacje o powiązaniach rozszerzeń plików są przechowywane w rejestrze. A jeśli przeglądasz trochę, nietrudno jest dowiedzieć się, jak to działa. W przypadku skojarzeń obejmujących całą maszynę wszystko dzieje się w katalogu głównym HKEY_CLASSES_ROOT . Ręczna edycja tych rzeczy daje najwyższą władzę nad rozszerzeniami plików (choć żmudnymi). Po prostu utwórz kopię zapasową na wypadek, gdybyś coś zepsuł i chcesz przywrócić.
Każde skojarzenie pliku ma podklucz o nazwie .xyz, gdzie xyz jest rozszerzeniem pliku. Wartość (Domyślna) dla tego klucza jest ustawiona na dowolny dowolny ciąg. Większość aplikacji rejestrujących rozszerzenia plików ustawia go na coś czytelnego dla człowieka. Na przykład .pdf w moim systemie jest ustawiony na FoxitReader.Document . W tym kluczu jest wiele innych wartości, ale nic nie jest obowiązkowe oprócz wartości (Domyślnej).
Niezależnie od tego, dla której ustawiono tę (Domyślną) wartość, odpowiedni podklucz o tej samej nazwie będzie również w katalogu głównym HKEY_CLASSES_ROOT. Wartość (domyślna) tego klucza jest zasadniczo „przyjazną nazwą” typu pliku. Ten klucz może mieć również wiele podkluczy, ale jedynymi, którymi jesteśmy zainteresowani, są DefaultIcon i Shell .
DefaultIcon, jak zapewne się domyślacie , kontroluje ikonę tego typu pliku. Wartość (Domyślna) dla tego klucza powinna być ustawiona na ścieżkę do pliku ikony. Lub jeśli ikona znajduje się w pliku .exe, ustaw ją na ścieżkę .exe i dołącz przecinek oraz indeks ikony na końcu ścieżki. Na przykład FoxitReader.Document DefaultIcon jest ustawiony na
C:\PROGRA~1\FOXITS~1\FOXITR~1\FOXITR~1.EXE,1
Shell to miejsce, w którym konfigurujesz wszystkie „akcje” dla tego typu pliku. Dla każdej akcji, którą chcesz zdefiniować, utwórz podklucz o nazwie cokolwiek chcesz nazwać akcję. Większość typów ma co najmniej jedną akcję o nazwie open . W ramach podklucza tej nowej akcji utwórz podklucz o nazwie Command . Wartością (domyślną) tego klawisza polecenia jest w zasadzie linia poleceń uruchamiana po kliknięciu / uruchomieniu tej akcji. Na przykład polecenie open w FoxitReader.Document to
"C:\PROGRA~1\FOXITS~1\FOXITR~1\FOXITR~1.EXE" "%1"
Argument „% 1” zostaje ustawiony na ścieżkę do pliku, z którego uruchomiono działanie.
Jeśli masz zdefiniowaną tylko jedną akcję dla danego typu pliku, uważam, że będzie to domyślna akcja, która zostanie uruchomiona, jeśli plik zostanie kliknięty dwukrotnie. Jeśli istnieje wiele możliwych działań, które można ustawić jeden będzie domyślnym modyfikując (domyślnie) wartość Shell klucza. Wystarczy ustawić na nazwę akcji, która ma być domyślna.
Biorąc to wszystko pod uwagę, nie jest zbyt wydajne robić to wszystko od zera. Prawdopodobnie łatwiej jest użyć wbudowanych narzędzi, aby dostać się do celu, a następnie po prostu dostosować rzeczy ręcznie, których narzędzia na to nie pozwalają. Powinienem też chyba wspomnieć, że wszystkie te informacje są oparte na XP, ale jestem prawie pewien, że żadna z nich nie uległa zmianie w przypadku Vista lub Win7.