Rejestr systemu Windows jest specjalną bazą danych o strukturze hierarchicznej, której przeznaczeniem jest przechowywanie danych konfiguracyjnych systemu oraz danych aplikacji. Na pierwszy rzut oka wydaje się, że odgrywa drugorzędną rolę w codziennym użytkowaniu systemu. Jednak rejestr jest wykorzystywany praktycznie podczas wszystkich czynności, które wykonujemy, np. gdy przeglądamy strony WWW, rejestr zapamiętuje adresy odwiedzanych witryn. Po dokładnym poznaniu jego struktury, staje się potężnym narzędziem dla programisty piszącego aplikacje pod Windows, pozwalając wpływać nawet na zachowanie i wygląd systemu. Jak wiele przydatnych funkcji można uruchomić za pomocą rejestru wie każdy, kto spotkał się z programami takimi jak Tweak UI.
Jeżeli chcesz wykorzystywać rejestr tylko w podstawowym zakresie, możesz pominąć tę sekcję i rozpocząć czytanie artykułu od „Dostęp z poziomu C#”)
Rejestr posiada pewne reguły zapisu danych, które na podstawowym poziomie operacji nie są nam potrzebne, jednak przy operacjach na bardziej skomplikowanych kluczach ich znajomość jest konieczna. Oto one:
*
99% procent danych w rejestrze jest przedstawionych w postaci szesnastkowej,
*
maski bitów, to specjalny sposób zapisu ustawień na pozycjach bitu w słowie. Każdy bit odpowiada za inną funkcję. Np. za pomocą słowa 10-bitowego, możemy zapisać 10 różnych ustawień
*
w rejestrze istnieją 2 sposoby zapisu liczb szesnastkowych – big-endian i little-endian (przekład na polski mógłby być co najmniej śmieszny, więc pozostawię oryginał). Sposób zapisu big-endian, zapisuje bardziej znaczące bity jako pierwsze, little-endian, mniej znaczące. Widząc wartość 0x12 0x34 w wartości binarnej, należy pamiętać o odwróceniu ich kolejności, tak by otrzymać poprawną wartość – 0x3412
*
system Windows używa systemu kodowania znaków Unicode, jednak obsługuje również ANSI. Należy pamiętać, że Unicode stosuje 16-bitową reprezentację za pomocą little-endian, ANSI natomiast big-endian
*
rejestr rozróżnia wartości null i puste łańcuchy, odpowiednio są to null i ””
*
w rejestrze istnieją identyfikatory zasad bezpieczeństwa (SID) – każde konto w systemie ma swój własny, unikalny SID,
*
globalnie unikalny identyfikator (GUID) to liczba, jednoznacznie identyfikująca obiekty, takie jak komputery, urządzenia, komponenty aplikacji. Mogą mieć te same nazwy, ale ich GUID’y zawsze będą różne. Przykładem może być następujący GUID, reprezentujący Kosz widoczny na pulpicie: {645FF040-5081-101B-9F08-00AA002F954E}.
Struktura rejestru
Podstawowym pojęciem jest klucz (Key), który możemy porównać do folderu w strukturze systemu plików, jako, że dokonują klasyfikacji odpowiednich wartości. Drugim typem są wartości klucza(Value) – podobne do plików, przechowujące konkretne dane.
Wartości klucza składają się z:
Nazwy – każda wartość posiada nazwę, która jest unikalna na poziomie danego klucza i może składać się 512 (ANSI) lub 256 (Unicode) znaków.
Typu – każda wartość ma typ, który determinuje przechowywane dane.
Danych – każda wartość może być łańcuchem pustym, null’em lub zawierać dane. Maksymalnie mogą to być dane o długości 32,676 bajtów, choć praktycznie przyjmuje się ograniczenie do 2KB.
Więcej o typach
Najczęściej występujące typy w rejestrze to:
REG_BINARY - dane binarne,
REG_DWORD - 32-bitowe wartości liczbowe, często używane jako flagi logiczne,
REG_SZ – łańcuchy znakowe, najczęściej spotykany typ w rejestrach.
Pozostałe typy są rzadziej spotykane, często są pochodnymi powyższych typów, np. REG_DWORD_LITTLE_ENDIAN (typ DWORD, w którym mniej znaczące bity są zapisywane jako pierwsze) lub zupełnie inny typ - REG_NONE (dane bez zdefiniowanego typu).
Organizacja rejestru
Rejestr na najwyższym poziomie hierarchii zawiera 5 kluczy głównych (gałęzi):
HKEY_USERS – informacje o wszystkich kontach na danym komputerze oraz o domyślnych ustawieniach dla użytkowników
HKEY_CURRENT_USER – zawiera spersonalizowane ustawienia użytkownika
HKEY_LOCAL_MACHINE – dane o konfiguracji komputera
HKEY_CLASSES_ROOT – powiązania programów z różnymi typami plików, rejestracja klas dla obiektów COM
HKEY_CURRENT_CONFIG – konfiguracja danych dla danego profilu sprzętowego
Całą strukturę rejestru możemy zobaczyć uruchamiając „Edytor rejestru” (menu Start -> Uruchom -> regedit.exe).
więcej na stronie
http://codeguru.pl/article-122.aspx