Alchemia Windows
Wracaj na początek   Następna strona

Co ciekawego znajdziesz w Rejestrze?

Choć podstawowym zaleceniem dla użytkowników jest unikanie bezpośredniej edycji Rejestru, niejednego niewątpliwie kusi perspektywa sięgnięcia do serca konfiguracji Windows. Niestety, trudno cokolwiek odnaleźć w konfiguracyjnej bazie danych bez wskazówek. Nieco dalej przedstwimy szczegółowy opis poszczególnych kategorii. Zacznijmy jednak od tego, co proste i ciekawe.

Modyfikowanie rejestracji typów plików

Rejestrowaniu plików poświęcona jest cała kategoria HKEY_CLASSES_ROOT. Zawiera ona wszelkie informacje, jakie ukazują się naszym oczom po wybraniu z okna Eksploratora Widok | Opcje | Typy plików.

W kategorii tej znajdziemy trzy grupy kluczy:

  • Rozszerzenia plików. Wskazują definicję klasy związaną z rozszerzeniem pliku. Tę grupę na załączonym przykładzie reprezentują dwa pierwsze klucze .xls.zip.
  • Definicje klas. Dane wykorzystywane przy obsłudze obiektu (może to być plik lub inny obiekt OLE) przez shell (powłokę) Windows 95 i mechanizm OLE. Podklucze reprezentują tu między innymi polecenia, jakie ukażą się w menu podręcznym obiektu -- tutaj znajdziemy m. in. wywołania programów i komendy DDE (wewnętrznego języka komunikacji między programami) realizujące te polecenia. Definicje klas stanowią większość w przykładowym fragmencie kategorii HKCR.
  • Klucze specjalne. Uzupełniają one definicje klas. Mają różne przeznaczenie. Z tej grupy można wskazać identyfikatory klas OLE (CLSID) i opisy klas DAO (Data Access Objects) wykorzystywane przez mechanizm ODBC (dostęp do baz danych).

Jak rejestrowane są pliki?

Schemat rejestracji pliku najlepiej prześledzić na wybranym przykładzie, którym może być choćby plik BMP. Najpierw znajdźmy klucz HKCR\.bmp. Zawiera on wartość Paint.Picture -- jest to nazwa klasy. Może ona pochodzić z zaimportowanego pliku REG z danymi rejestracyjnymi aplikacji, być nadana przez użytkownika poprzez menu Widok | Opcje | Typy plików z okna Eksploratora lub też w ogóle nie występować, jeżeli powiązanie rozszerzenia z poleceniem otwierającym plik pochodzi z Windows 3.x.

Kluczowi o nazwie odpowiadającej rozszerzeniu pliku towarzyszyć mogą dalsze "gałęzie". Do klucza .bmp "podwieszony" jest ShellNew, co wskazuje tzw. rozszerzenie shella (powłoki). Zawiera ono pusty wpis NullFile. Wprowadzenie takiej konstrukcji daje ciekawy efekt -- Windows 95 wprowadza plik na listę dostępnych do szybkiego utworzenia.

Oznacza to, że nazwa klasy (zazwyczaj w wersji bardziej przyjaznej niż Paint.Picture, ale o tym dalej) będzie dołączona do menu, jakie ukazuje się po wybraniu w oknie Eksploratora Plik | Nowy lub podwójnym kliknięciu na pulpicie. Również po zerwaniu połączenia skrótu z plikiem, użytkownik będzie pytany, czy chce utworzyć nowy o tej samej nazwie i położeniu. Opcja NullFile decyduje o tym, że nowy plik będzie miał zerową wielkość. W przypadku rozszerzenia BFC, odpowiadającego Aktówce, zamiast NullFile mamy dość rozbudowaną komendę (Command).

Właściwy opis klasy Paint.Picture znajdziemy w kluczu HKCR\Paint.Picture.

Po kliknięciu na nim pierwsze, co widzimy, to "ludzka" nazwa klasy -- taka, jaką widzimy w oknie Opcje Eksploratora. W tym przypadku jest to Obraz - mapa bitowa.

Uwaga: Jest kilka rodzajów plików, których rozszerzeń Eksplorator Windows 95 nigdy nie pokazuje, nawet przy wyłączonej opcji Ukryj rozszerzenia MS-DOS dla zarejestrowanych typów plików. Należą do nich: skrót do aplikacji/dokumentu (LNK), skrót do aplikacji MS-DOS (PIF), wycinek (SHS) i skrót do fragmentu dokumentu (SHB). Odpowiadają im klasy lnkfile, piffile, ShellScrapDocShortcut widoczne w kategorii HKCR. Dzieje się tak dzięki umieszczeniu wartości typu tekstowego NeverShowExt o zerowej długości w kluczu definiującym klasę. Wartość tę można dodawać do dowolnych klas lub usuwać z miejsc, w których domyślnie została umieszczona (wartość ta nie występuje w kluczu Paint.Picture).

Pierwszym w galerii podkluczy Paint.Picture jest CLSID (Class Identifier), czyli identyfikator klasy. Jest to właściwie trzecie już po "ludzkim" Obraz - mapa bitowa i "bardziej wewnętrznym" Paint.Picture określenie tej samej klasy. Tworzy je ciąg 32 liczb (w zapisie szesnastkowym) ujętych w nawiasy klamrowe. Wskazuje on odpowiedni podklucz w grupie HKCR\CLSID, który jeszcze precyzyjniej opisuje klasę, wskazując odpowiednią bibliotekę procedur do jej obsługi.

Znaczenie drugiego klucza jest dość proste -- DefaultIcon znaczy po angielsku ikona domyślna. Przyglądając się bliżej danym wartości w tym kluczu możemy naocznie stwierdzić, że długie nazwy plików nie są wykorzystywane przez system operacyjny. Drugą pouczającą obserwacją może być to, że jeżeli plik zawiera kilka ikon, to tę, którą chcemy wybrać, wskazujemy liczbą po przecinku.

Po kluczu określającym domyśną ikonę obiektu następują dwa, które wykorzystywane są przez mechanizmy OLE. Klucz protocol zawiera w naszym przypadku jedynie informację StdFileEditing, co umożliwia edycję obiektu w innych aplikacjach przy wykorzystaniu mechanizmów OLE.

Ostatni, często występujący parametr to shell. Zawiera on definicje poleceń, które wykonują podstawowe działania na obiekcie, a dostępne są po kliknięciu prawym przyciskiem myszy. Normalną drogą tworzenia ich jest rejestracja klasy obiektu wykonywana podczas instalowania obsługującej go aplikacji. Wpisy te można również modyfikować korzystając z zakładki Typy plików okna opcji Eksploratora.

Uzupełnianie rejestracji -- jedno rozszerzenie więcej...

Jak uzupełnić zarejestrowaną klasę o kolejne rozszerzenie? Okno opcji Eksploratora (Typy plików) tego nie umożliwia. W oknie edycji typu pliku nie ma możliwości dopisania nowego rozszerzenia. Stworzenie nowego typu o tej samej nazwie tworzy drugą, odrębną klasę. Można oczywiście stworzyć całkowicie nową klasę, obejmującą rozszerzenia, które chcemy dodać. Wydaje się jednak, że w istotnych przypadkach klas rejestrowanych przez duże aplikacje, sam wpis rejestracyjny jest tak rozbudowany, że jego przepisanie jest nie tylko czasochłonne, ale też grozi popełnieniem błędów.

Często problem przyporządkowania rozszerzenia do istniejącej już klasy pojawia się po zainstalowaniu, a następnie odinstalowaniu nowej aplikacji. Może ona przyporządkować nasze przykładowe rozszerzenie BMP do własnej klasy. Przy odinstalowywaniu aplikacji, skojarzenie z nową klasą często pozostaje, co powoduje, że podwójne klinięcie na pliku nie powoduje już otwarcia żadnej aplikacji. Przykład takiej sytuacji przedstawiony jest powyżej -- skojarzenie rozszerzenia BMP z klasą EditorImage wprowadził program zainstalowany jedynie tymczasowo. Wówczas najbardziej wskazaną czynnością jest sięgnięcie do rejestru i odtworzenie powiązania. Czynności do wykonania są tu podobne jak przy dodawaniu nowego rozszerzenia do istniejącej klasy.

Jedynym rozwiązaniem jest w takim wypadku bezpośrednia edycja Rejestru. Zaczynamy od znalezienia wpisu kojarzącego rozszerzenie z nazwą klasy -- tej, z którą chcemy skojarzyć rozszerzenie nowe (lub już skojarzone z inną klasą). Zapisujemy lub zapamiętujemy tę nazwę (np. Paint.Picture). Następnie tworzymy lub zmieniamy wpis kojarzący nasze nowe rozszerzenie z tą właśnie nazwą (np. BMP z Paint.Picture). W przypadku, gdy rozszerzenie to nie miało wcześniej swojego wpisu w Rejestrze, na tym kończymy. Jeżeli było ono już skojarzone z inną klasą, pojawia się jeszcze kwestia usunięcia jej opisu. Możemy (choć nie musimy) zrobić to tylko wtedy, gdy nie były z nią skojarzone inne rozszerzenia. Sprawdzenie tego umożliwia funkcja przeszukiwania Rejestru (wystarczy przeszukać Wartości pod kątem nazwy klasy, którą chcemy usunąć).

O uprawnieniach czytaj na następnej stronie