Rejestr -
W poszukiwaniu danych
Wstęp
Cześć Wam! Jeśli przeczytacie ten text do
end'a okaże się, że mógłby nosić tytuł Ashampoo 99 Delux.
Jednak nie będę tutaj opisywał w całości tego programu. Posłuży
nam on jedynie jako narzędzie pracy przydające się najczęściej
zaawansowanym użytkownikom. Ashampoo 99 - bo o nim mowa
służy do przywracania dawnych ustawień systemu, czyli stanu
rejestru plików INI, itp. w jakim się znajdowały przed zainstalowaniem
felernej gry czy aplikacji. Nie musisz się nim posługiwać zawsze
- przyznaje deinstalowanie wszystkich aplikacji przez Ashampoo
byłoby z deka kłopotliwe ;) Większość gier i programów ma swoje
deinstalatory, które nie przez przypadek znajdują się na krążku
z naszą ulubioną grą. Przejdźmy do wytłumaczenia czym jest deinstalator.
Deinstalator jest narzędziem pozwalającym "bezpiecznie"
usunąć aplikacje tzn. tak, aby wszystkie zmiany wprowadzone
przez program zostały usunięte. Dotyczy to przede wszystkim
plików konfiguracyjnych i wpisów do rejestru. No właśnie. Czasami
zdarza się, że program nie ma deinstalatora. Często znajdujemy
o tym wzmiankę w opisie progsa, w tym wypadku może przyjść nam
z pomocą Ashampoo 99. Instalujemy przez to narzędzie interesujący
nas program i zapisujemy log na dysku. Gdy przyjdzie czas na
usunięcie aplikacji, wówczas wystarczy jedynie odpalić Ashampoo
i kliknąć na przycisk "Remove an Application"
- przez resztę przeprowadzi nas Wizard. Jeszcze lepszym sposobem
jest zrobienie zrzutu rejestru przed i po instalacji i zapisanie
go na dysku, aby potem, gdy chcemy wyrzucić program można było
dwie wersję porównać i zobaczyć co program naniósł do systemu.
Screen(Kliknij)
Dla ambitnych ?
Chciałbym tutaj troszkę rozwinąć sposób porównywania
dwóch wersji rejestru.
Załóżmy, że uparliśmy się na napisanie programu, który w znacznym
stopniu nakładałby się na możliwości konfiguracyjne systemu.
Lecz co w wypadku, gdy nie wiemy gdzie znajduję się interesująca
nas wartość. Z pomocą przychodzi Ashampoo 99 Delux.
Wykonujemy zrzut rejestru przed i po włączeniu danej opcji konfiguracyjnej
systemu. Np:
Wykonuję zrzut rejestru, klikam kolejno Start>Ustawienia>Opcje
Folderów>(karta)Widok i zaznaczam opcję "Pokazuj
wyskakujące opisy folderów i elementów pulpitu". Następnie
jeszcze raz zrzucam rejestr i porównuję obie jego wersję.
Ashampoo 99 Delux obrazuje mi która wartość w rejestrze
się zmieniła. Można z tego wywnioskować, że wartość "ShowInfoTip"
odpowiada za włączenie/wyłączanie ów opcji.
Tak można robić teoretycznie ze wszystkim.
Piszemy program
Pomysł napisania takiego programu jest nieco
lamerski, ale chodzi tu przecież o przykład. A więc zabieramy
się do pisania programu, który będzie potrafił zmienić opcję
systemu, która jeszcze na dodatek znajduję się w jego konfiguracji.
Jak widzicie pisanie takich programów nie ma sensu. I chciałbym
tu kogoś oświecić, bo nie rzadko w sieci spotykam równie przypalone
pomysły.
Uruchomcie Delphiego. Następnie z palety Standard wstawcie komponent
CheckBox. Jest to pole wyboru. W Inspektorze Obiektów
zmieńcie jego właściwość Caption na "Pokazuj
wyskakujące opisy pomocy" czy jak tam sobie zażyczycie.
Za pomocą F12 przenieś się do edytora kodu. Na samym szczycie
unit'u powinna znajdować się sekcja uses, do której
należy dodać (po przecinku) moduł Registry. Jest to moduł dający
nam możliwość obsługiwania rejestru. Jednak aby go użyć należy
go zadeklarować. Aby to uczynić, należy dopisać po słowie var
(przed sekcją implementation) linijkę kodu. Powinno
to wyglądać w ten sposób:
var
Form1: TForm1;
Reg: TRegistry;
Teraz kliknijcie double na CheckBox'a i między
begin a end wpiszcie taki kod:
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Try
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\
Advanced',False);
Reg.WriteBool('ShowInfoTip',CheckBox1.Checked);
Except
End;
Pierwsza jego linijka przypisuje do zmiennej
Reg klasę TRegistry. Druga, ustawia domyślny klucz na HKEY_CURRENT_USER.
Jak wiecie istnieje sześć kluczy, są to:
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE,
HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA.
W Delphi jednak nie musisz podawać, że głównym kluczem jest
HKEY_CURRENT_USER. Jeśli nic nie napiszesz program domyślnie
będzie próbował odszukać dany klucz w
HKEY_CURRENT_USER. Jednak ja przyjąłem to pisać
aby i kod potem łatwo odczytać :)
Trzecia linijka to "Try". Słówko bardzo pomocne
w programowaniu. Jest to tak zwana obsługa wyjątków. Jeśli program
wykona coś nieprawidłowego, wówczas wykonywane są instrukcję
za słowem Except.
Czwarta linijka to Otwarcie klucza w którym znajduję się nasza
wartość. Następna linijka to przypisanie naszej wartości stanu
kontrolki CheckBox (zaznaczona daje 1, odwrotnie daje
0). OKey, ale przydałoby się trochę ulepszyć ten programik.
Możemy unowocześnić go stosując przypisywanie przy starcie naszej
kontrolce, bieżącej wartości z rejestru. Kod wykonujący tą operację
wyglądałby następująco:
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Try
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion
\Explorer\Advanced',False);
CheckBox1.Checked := Reg.ReadBool('ShowInfoTip');
Except
End;
Z grubsza nie różni się prawie niczym, lecz
po dokładnym przeanalizowaniu, stwierdzisz, że nieco zmodyfikowana
została linijka, która w poprzednim przykładzie odpowiadała
za zapisywanie wartości - tutaj, zależy nam na odczycie, więc
jeśli chcielibyśmy to przetłumaczyć zapewne wyszłoby nam coś
w rodzaju:
Otwóz klucz: Reg.OpenKey('Software\Microsoft\Windows\
CurrentVersion\Explorer\
Advanced',False);
Pole wyboru CheckBox'a = Odczyt z wartości ShowInfoTip.
Jeśli ShowInfoTip=1, pole zostanie zaznaczone, jeśli 0 pozostanie
odznaczone.
Zakończenie
Ashampoo'99 Delux jest bardzo ciekawym,
wartym naszej uwagi programem. Pozwala nam nie tylko na dokładny
wgląd w informację ("śmieci") jakie zostawiają instalowane
przez nas programy, ale także na sprawdzanie różnego rodzaju
ustawień, do których dotarcie, w rzeczywistości zajęłoby nam
sporo czasu. Samą aplikację w wersji Shareware znajdziecie na
kwietniowej płytce ENTER'a. Stronę producenta powinniście znaleźć
pod adresem www.ashampoo.com.
Życzę miłej pracy z programem!
Załącznik - przykład
|