Obsługa rejestru systemowego przy pomocy wbudowanych funkcji VB.
Rejestr systemowy jest następcą plików ini, gdzie przechowywane były wszystkie informacje o systemie i zainstalowanych aplikacjach. Rejestr pojawił się już w Windows 3.1, lecz używany był w marginalnych sytuacjach. Jednak wraz z rozwojem systemu Windows, pliki ini stały się niewystarczającą skarbnicą przechowywanych informacji. Proste w budowie pliki ini zostały zastąpione w Windows 95 rejestrem, który umożliwiał przechowywanie informacji w bardziej rozbudowanej strukturze. Omawiane funkcje VB, obsługujące rejestr, mają pewne ograniczenia. Umożliwiają one dostęp tylko do jednej części, w której mogą tworzyć ograniczoną liczbę poziomów kluczy. Miejsce w rejestrze, w którym możemy się poruszać za pomocą funkcji VB, kryje się wyłącznie pod kluczem:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Uwaga:
- Można tworzyć klucze podrzędne poniżej tego klucza, jeśli jednak jest to niewystarczające, należy posłużyć się funkcjami Windows API, które częściowo są omówione w pliku API32_PL.hlp zamieszczonego w dziale API.
- Przy pomocy regedit.exe można zobaczyć architekturę rejestru. Pamiętać jednak należy, że zabawa z rejestrem może skończyć się tragicznie. Więc radzę bawić się nim ostrożnie (mam na myśli osoby, którym brak doświadczenia w tej dziedzinie).
Jeśli zaczynasz pracę z rejestrem, radzę zapoznać się z omawianymi funkcjami, bo przy ich użyciu nie narozrabiasz w rejestrze, co mogłoby się to skończyć tragicznie dla Twojego systemu. Twoja aplikacja nie musi znać nazwy tego klucza: HKEY_CURRENT_USER\Software\VB and VBA Program Settings, bo jak już wspomniałem, klucz ten jest domyślnym kluczem w którym aplikacja będzie, za pomocą funkcji VB, pracować z rejestrem.
Lista funkcji VB, które umożliwiają pracę z rejestrem:
funkcja przeznaczenie
DeleteSetting usuwa klucz wraz z wartością
SaveSetting dodaje lub aktualizuje klucz (i jego wartość)
GetAllSettings zwraca listę kluczy i ich wartości
GetSetting zwraca wartość klucza
Zanim przystąpię do opisu tych funkcji przedstawię wygląd klucza widzianego w regedit.exe w celu uwidocznienia możliwości tych funkcji:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\KluczAplikacji\KluczSekcji\Klucz
Objaśnienie:
człon opis
pierwszy człon Wspomniany wcześniej klucz domyślny
KluczAplikacji W tym argumencie jako nazwę klucza podaje się przeważnie nazwę aplikacji, w celu łatwej identyfikacji w rejestrze, zachowując pewne kanony przy wykorzystywaniu rejestru. Pozwala to na łatwą identyfikację klucza z aplikacją (np. Edytorek).
KluczSekcji Określa klucz podrzędny, stosowany głównie w celu podzielenia danych ze względu na przeznaczenie przechowywanych informacji (np. Ustawienia).
Klucz Nazwa klucza w którym jest przechowywana jego wartość (np. "Zawsze na wierzchu").
Jeśli przeglądałeś rejestr przy pomocy programu regedit.exe, mam nadzieję że wszystko stało się jasne. Natomiast gdy są jeszcze jakieś problemy, to w ich rozwiązaniu powinny pomóc przedstawione poniżej opisy funkcji:
GetAllSettings pobiera z klucza podrzędnego KluczSekcji wszystkie klucze i ich wartości.
Składnia:
GetAllSettings(KluczAplikacji, KluczSekcji)
Składnia tej funkcji składa się z następujących części:
KluczAplikacji - w tym argumencie podajemy nazwę aplikacji
KluczSekcji - podajemy klucz podrzędny z którego będziemy czytać wszystkie zawarte w nim klucze i ich wartości
Przykład:
Text1.Text = "" Dim Odczytane As Variant Dim x As Integer Odczytane = GetAllSettings("Kalendarz", "Dziadek") For x = 0 To UBound(Odczytane) Text1.Text = Text1.Text & Odczytane(x, 0) _ & vbTab & " =" & Odczytane(x, 1) & vbNewLine Next x
Tu przeanalizuj kod programu. Jeśli nie jesteś w stanie przewidzieć co będzie efektem jego działania, to stwórz nowy projekt w VB i dodaj go do zdarzenia Command1_Click przycisku. Pamiętaj aby kontrolka Text1 miała ustawioną właściwość MultiLine na True. Najważniejsze jest to, aby odpowiednie klucze były zapisane w rejestrze.
Uwaga: Opis ma status freeware - możesz go przekazywać innym, wstawić go na swoją stronę (z zaznaczeniem autorstwa). Opis nie ma charakteru public domain - nie możesz dokonywać w nim zmian.