Spis treści

Rejestr

Geneza rejestru

Inicjalizacja systemu Windows w wersji 3.1 opierała się na plikach: 

win.ini - zawierał podstawowe informacje dotyczące konfiguracji oprogramowania. Plik miał ograniczony rozmiar(do 64 KB). Kiedy wielkość pliku osiągnęła już swój maksymalny rozmiar, wszystkie wpisy dodane do ostatnich sekcji były ignorowane przez system, Powodowało to wiele problemów. 

system.ini - zawierał informacje o konfiguracji sprzętu komputerowego i sterownikach ładowanych podczas startu. 

progman.ini - zawierał ustawienia inicjalizacji dla Manager Program, natomiast winfile.ini dla File Program. 

control.ini - zawierał ustawienia wprowadzone w Panelu sterowania, 

protocol.ini - zawierał ustawienia sieci dla Windows, 

reg.dat - przechowywane w nim były skojarzenia plików i informacje OLE (Object Linking &Embedding). Dzięki niemu można było obejrzeć listę zainstalowanych aplikacji i rozwiązywać problemy z niewłaściwym łączeniem i osadzaniem obiektów w zarejestrowanych aplikacjach. W porównaniu do plików ini, które były plikami tekstowymi, łatwymi do edytowania, plik reg.dat był plikiem binarnym. Do jego edycji potrzebny był Editor Registry (registry.exe). Struktura tego pliku była dużo prostsza niż dzisiejszego rejestru. Ponieważ plik reg.dat pozwalał już na pewne modyfikacje, Microsoft postanowił dalej rozwijać ten pomysł. I tak w wersji Windows 95 po raz pierwszy zaistniał REJESTR jako centralna baza danych. Instalowane urządzenia (wraz ze swoimi sterownikami w postaci plików inf) oraz aplikacje umieszczały w nim swoje adnotacje. Jego budowa przypominała budowę plików ini – sekcjom odpowiadały klucze, wpisom – wartości. Ich nazwy nie były już ograniczone do 8 znaków. Pozwoliło to znacznie łatwiej wykrywać problemy i odszukiwać informacje. Wprowadzenie rejestru nie było jednak równoznaczne z pozbyciem się plików ini. Powodem tego było zachowanie zgodności z aplikacjami 16-bitowymi przeznaczonymi dla środowiska MS-DOS i Windows 3.x. W systemie Windows XP Professional PL rejestr składa się z plików sam.dat, security.dat, software.dat, system.dat, default.dat umieszczonych w katalogu C:\Windows\System32\Config oraz w pliku ntuser.dat umieszczonego w katalogu profilu danego użytkownika.


Rola rejestru podczas startu systemu operacyjnego Windows XP

Początkowy etap startu komputera kontrolowany jest przez BIOS i test POST - Power On Self Test, odpowiedzialny głównie za testowanie karty graficznej i pamięci RAM. Ostatnim etapem realizowanym przez BIOS jest odszukanie pierwszego sektora dysku startowego MBR – Master Boot Record i wczytanie z niego do pamięci RAM programu inicjującego ładowanie tzw. bootloadera, który z kolei odpowiedzialny jest za ładowanie do pamięci pliku startowego NTLDR( NT Loader) uruchamiającego system operacyjny. Pierwszym etapem startu systemu jest odczytanie przez NTLDR pliku boot.ini. W przypadku, gdy mamy zainstalowanych więcej niż 1 system, wyświetlone zostanie menu startowe wyboru systemu, jeżeli mamy tylko 1 system to menu startowe zostanie pominięte. Po wybraniu opcji Windows XP , uruchamiany jest program NTDETECT.COM, który analizuje konfigurację portów komunikacyjnych, zainstalowanych kart rozszerzeń w magistralach PCI, EISA, ISA, napędów dyskowych i myszki. Wszystkie te informacje zapisywane są w kluczu HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION. Następny etap startu systemu operacyjnego związany jest z ładowaniem przez NTLDR jądra systemowego, NTOSKRNL.EXE. W dalszej kolejności odszukiwane są sterowniki uruchamianych urządzeń.

Informacje na temat sterowników umieszczone są w rejestrze w kluczu HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Services Jeśli któryś ze sterowników posiada wartość Start 0x0 , oznacza to, że zostanie on załadowany ale nie uruchomiony. Wartość Start 0x1 oznacza że sterownik zostanie załadowany i jednocześnie uruchomiony. Kolejnym etapem startu systemu jest menadżer sesji Smss.exe. Informacje na jego temat znajdują się w kluczu HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Control\Session Manager. Menadżer sesji odpowiedzialny jest za uruchamianie programów znajdujących się w wartości BootExecute. W niej domyślnie znajduje się autochk uruchamiający program Autochk.exe, który sprawdza dysk twardy w momencie startu systemu. Menadżer sesji odpowiedzialny jest również za uruchamianie menadżera logowania Winlogon.exe, podczas uruchamiania procesu Winlogon pobierana jest zawartość klucza HKEY_LOCAL_MACHINESOFTWARE\MicrisoftNT\CurrentVersion\Winlogon Po udanym zalogowaniu użytkownika do systemu, w rejestrze następuje modyfikacja wpisu o ostatniej poprawnej konfiguracji systemu. Jeśli wszystko przebiegło prawidłowo, pojawia się pulpit. Z punktu widzenia użytkownika najistotniejsze są informacje, które klucze rejestru są aktywowane i odpowiadają za uruchomienie programów i skryptów podczas startu systemu operacyjnego. Wiąże się to głównie z niebezpieczeństwami wynikającymi na przykład z uruchamiania się dialerów. Aby mieć całkowitą pewność i kontrolę nad uruchamianymi programami podczas startu, warto sprawdzić wpisy w pliku Win.ini w sekcji Load= i Run= oraz sprawdzać, jakie skróty znajdują się w folderze Autostart umiejscowionym w katalogach C:\Documents and Settings\All Users\Menu Start\Programy\Autostart oraz C:\Documents and Settings\Nazwa użytkownika\Menu Start\Programy\Autostart


Budowa rejestru Windows XP Professional PL

Rejestr zawiera mnogość informacji dotyczących systemu, urządzeń i aplikacji. Aby łatwo było się w nim poruszać, nadano mu strukturę drzewiastą, podobną do struktury folderów. Gałęzie główne (kategorie) to podstawa rejestru, nie można ich usunąć ani dodać nowych. Kategorie zawierają klucze, które odpowiadają folderom. Każdy klucz zawiera podklucze, które z kolei odpowiadają plikom.

Główne gałęzie rejestru

HKEY_CLASSES_ROOT - klasy obiektów Jest to jedyna gałąź w rejestrze zachowana ze względu na zgodność z rejestrem Windows 3.x. przechowywane są w niej skojarzenia typów plików według ich rozszerzeń. Każdy typ pliku ma własny klucz oraz określenie aplikacji, jaka ma go uruchomić. Natomiast informacje OLE pozwalają na łatwą komunikację z serwerem OLE, np. wklejanie arkusza Excela do dokumentu Worda. Dane do tego klucza pobierane są z kluczy HKEY_LOCAL_MACHINE\Software\Classes i HKEY_CURRENT_USER\Software\Classes. Odbicie tej kategorii znajduje się w opcjach eksploratora na karcie Typy Plików. 

HKEY_CURRENT_USER - bieżąca konfiguracja użytkownika Gałąź ta zawiera informacje o ustawieniach i konfiguracji systemu aktualnie zalogowanego użytkownika i generowana jest dynamicznie podczas logowania. Połączona jest ściśle z gałęzią HKEY_USER

Gałąź HKEY_CURRENT_USER składa się między innymi z następujących kluczy: 

AppEvents - klucz zawiera informacje o zdarzeniach dźwiękowych występujących w systemie oraz zdefiniowanych przez użytkownika, np. schematach dźwiękowych, powiadomieniu o nowej poczcie (informacje w tym kluczu należy zmieniać przy pomocy Panelu Sterowania, korzystając z narzędzia Dźwięki. 

Control Panel - znajdziemy tu klucze odpowiadające narzędziom dostępnym w Panelu Sterowania aktualnie zalogowanego użytkownika. 

Keyboard Layout - zawiera ustawienia użytkownika dotyczące układu klawiatury. 

Printers - informacje o zainstalowanych drukarkach i ich ustawieniach. 

RemoteAccess - zawiera informacje wykorzystywane do zdalnego dostępu do innych komputerów. 

Software - informacje dotyczące konfiguracji aplikacji dostosowanych do potrzeb użytkownika (pozostałe dane konfiguracyjne mają swoje miejsce w kategorii HKEY_LOCAL_MACHINE\Software).

HKEY_LOCAL_MACHINE - konfiguracja systemu Zawiera informacje dotyczące konfiguracji komputera niezależnie od zalogowanego użytkownika. Gromadzone są tu dane dotyczące urządzeń podłączonych do komputera nie tylko w chwili obecnej, ale również w przeszłości. Zmiany w tej gałęzi dokonywane są za pomocą narzędzia System dostępnego w Panelu Sterowania oraz poprzez automatyczne wykrywanie urządzeń Plug & Play. Programy instalacyjne sterowników również umieszczają tu swoje wpisy(pliki .inf). Czasami dla tego klucza używa się skrótu „HKLM”.


Pod klucze HKLM:

Hardware - zawiera konfigurację sprzętu systemowego; dane zawarte w tym kluczu są podczas każdego uruchomienia systemu zbierane przez program NTDETECT i przekazywane do jądra systemu po jego uruchomieniu. 

Sam - zawiera informacje o lokalnych i domenowych kontach, takie jak hasła czy definicje grup; tego klucza nie może odczytać żaden użytkownik, nawet administrator, ponieważ dane zapisane w nim są w formie zaszyfrowanej. 

Security - zawiera polisy użytkownika i grupy, np. uprawnienia do zdalnego dostępu; również ten klucz jest zaszyfrowany. 

Software - zawiera informacje konfiguracyjne wszystkich aplikacji, które korzystają z rejestru, informacje dotyczą wszystkich użytkowników którzy zalogują się do systemu. 

System - zawiera główne dane dotyczące konfiguracji systemu, np. partycja na której został zainstalowany. Najważniejszy jest klucz 

CurrentControlSet - zawierający opis profilu konfiguracji systemu wykorzystywany w trakcie bieżącej sesji. 

ControlSet - zawiera ostatnią dobrą konfigurację, z której udało się poprawnie uruchomić system.

Opis konfiguracji systemu obejmuje: 

HKLM\SYSTEM\CurrentControlSet\Control – zawiera ustawienia sieci, protokoły komunikacyjne, system plików, mapowanie klawiatury, konfigurację Plug&Play, rodzaj systemu i inne; 

HKLM\SYSTEM\CurrentControlSet\Enum – enumeracja – przypisywanie do identyfikatorów wykorzystywanych przez system wszystkich urządzeń w systemie; 

HKLM\SYSTEM\CurrentControlSet\Services – zawiera opis wszystkich usług systemowych i ich parametry konfiguracyjne; jest to jedyne miejsce w rejestrze, które pozwala uzyskać pełną kontrolę nad parametrami uruchamianych usług. 

HKEY_USERS - profile wszystkich użytkowników Zawiera osobne klucze dla każdego użytkownika dysponującego kontem lokalnym w systemie – zgodnie z opisem w HKCU. Klucz DEFAULT zawiera ustawienia, których używa konto SYSTEM. Pozostałe konta są identyfikowane przez numeryczną wartość SID (Security Identifier) i odpowiadają profilom poszczególnych użytkowników.

HKEY_CURRENT_CONFIG - profil sprzętowy Jest to gałąź, która jest ściśle powiązana z kluczem

HKLM\SYSTEM\CurrentControlSet\Hardware\Profiles\Current, zawierającym dane konfiguracyjne aktualnie wykorzystywanego profilu sprzętowego. Są tu przechowywane tylko informacje różniące się od domyślnych ustawień zawartych w kluczach Software i System. Większość zawartych tu ustawień profilu można modyfikować poprzez Panel Sterowania (Usługi, Menadżer urządzeń, System).


Edycja i modyfikowanie rejestru

Menu Start > Uruchom > regedit.exe

Maksymalny rozmiar nazwy wartości w kluczu Systemy Windows Server 2003 i Windows XP: 16 383 znaków System Windows 2000: 260 znaków ANSI lub 16 383 znaki Unicode Windows Millennium Edition/Windows 98/Windows 95: 255 znaków Wartości długie (o rozmiarze większym niż 2048 bajtów) muszą być przechowywane jako pliki z nazwami plików przechowywanymi w rejestrze. Rejestr działa wtedy wydajniej. Maksymalny rozmiar wartości jest następujący: System Windows NT 4.0/Windows 2000/Windows XP/Windows Server 2003: dostępna pamięć Windows Millennium Edition/Windows 98/Windows 95: 16 300 bajtów Uwaga: Obowiązuje limit całkowitego rozmiaru wszystkich wartości klucza równy 64 k.

Aktualnie zdefiniowane i używane przez system Windows typy danych 

Wartość binarna - REG_BINARY - Dane binarne. Większość informacji o składnikach sprzętowych jest przechowywana jako dane binarne i wyświetlana w Edytorze rejestru w formacie szesnastkowym.

Wartość DWORD - REG_DWORD - Dane reprezentowane przez liczbę o długości 4 bajtów (32-bitową całkowitą). Wiele parametrów sterowników urządzeń i usług jest tego typu i jest wyświetlanych w Edytorze rejestru w formacie binarnym, szesnastkowym lub dziesiętnym. Wartości pokrewne to DWORD_LITTLE_ENDIAN (najmniej znaczący bajt znajduje się pod najniższym adresem) i REG_DWORD_BIG_ENDIAN (najmniej znaczący bajt znajduje się pod najwyższym adresem).

Wartość ciągu rozwijalnego - REG_EXPAND_SZ -Ciąg danych o zmiennej długości. Ten typ danych obejmuje zmienne, których wartości są obliczane, jeśli program lub usługa korzysta z danych. 

Wartość wielociągu - REG_MULTI_SZ - Ciąg wielokrotny. Wartości zawierające zestawienia lub wartości wielokrotne, zapisane zwykle w formie możliwej do odczytania przez ludzi. Wpisy są oddzielane spacjami, przecinkami lub innymi znacznikami.

Wartość ciągu - REG_SZ - Ciąg tekstowy o stałej długości. Gałąź rejestru to grupa kluczy, podkluczy i wartości w rejestrze, która ma zestaw plików obsługi zawierających kopie zapasowe jej danych. Pliki obsługi wszystkich gałęzi rejestru z wyjątkiem HKEY_CURRENT_USER znajdują się w folderze SystemrootSystem32Config w systemach Windows NT 4.0, Windows 2000, Windows XP i Windows Server 2003; pliki obsługi gałęzi HKEY_CURRENT_USER znajdują się w folderze SystemrootProfilesUsername. Rozszerzenia nazw plików w tych folderach, a w niektórych przypadkach brak rozszerzenia, wskazują typ danych zawartych w tych plikach. 

Gałąź rejestru - Pliki pomocnicze 

  • HKEY_LOCAL_MACHINESAM - Sam, Sam.log, Sam.sav
  • HKEY_LOCAL_MACHINESecurity - Security, Security.log, Security.sav
  • HKEY_LOCAL_MACHINESoftware - Software, Software.log, Software.sav
  • HKEY_LOCAL_MACHINESystem - System, System.alt, System.log, System.sav
  • HKEY_CURRENT_CONFIG - System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log
  • HKEY_USERSDEFAULT - Default, Default.log, Default.sav