główna strona
wróć
[C#] Współpraca z rejestrem Windows w C#
Ostatnia zmiana: 08.07.2009, Autor artykułu: Waldemar Miotk
artykul-0027.jpg

W Windows istnieje bardzo wygodny sposób przechowywania ustawień konfiguracyjnych programu w rejestrze systemowym. Rejestr systemowy to taka centralna baza danych, dostępna dla wszystkich programów, w której gromadzone są informacje o komputerze oraz poszczególnych programach. W tym artykule napiszę w jaki sposób napisać program współpracujący z rejestrem pod C#.

Nie będę wdawał się w szczegóły opisujące rejestr, można je znaleźć w wielu miejscach w internecie, opiszę jedynie sam sposób pracy.

Najpierw upewnijmy się, iż posiadamy odpowiednie wpisy w miejscu definiowania przestrzeni nazw.

using Microsoft.Win32;

Aby móc pracować z rejestrem musimy otworzyć odpowiedni klucz z którym będziemy pracować. Aby to zrobić musimy skorzystać z klasy Registry. Wykonujemy więc:

RegistryKey rejestr = Registry.CurrentUser.OpenSubKey("Software\\miotk.eu\\SlepyLos");

W ten sposób otworzyliśmy dostęp do klucza "Software\\miotk.eu\\SlepyLos" w gałęzi HKEY_CURRENT_USER.

Aby otwierać klucze w innych gałęziach używamy:

RegistryKey rejestr = Registry.ClassesRoot.OpenSubKey("shell\\open"); // dla gałęzi HKEY_CLASSES_ROOT
RegistryKey rejestr = Registry.CurrentConfig.OpenSubKey("Software\\Microsoft\\windows"); // dla gałęzi HKEY_CURRENT_CONFIG
RegistryKey rejestr = Registry.DynData.OpenSubKey("SOFTWARE\\Microsoft");  // dla gałęzi HKEY_DYN_DATA
RegistryKey rejestr = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft");  // dla gałęzi HKEY_LOCAL_MACHINE
RegistryKey rejestr = Registry.Users.OpenSubKey("S-1-5-18\\Software\\Microsoft"); // dla gałęzi HKEY_USERS


Oczywiście wartości kluczy są przykładowe.

W ten sposób otworzyliśmy klucz w trybie do odczytu. Aby móc zapisywać lub kasować wartości musimy otworzyć go w trybie zapisu. Aby to zrobić otwieramy klucz z parametrem "true" po nazwie klucza, np.:

RegistryKey rejestr = Registry.CurrentUser.OpenSubKey("Software\\miotk.eu\\SlepyLos",true);

Jak już klucz został otwarty, to możemy wykonywać na tym kluczu operacje:

1. Dodanie wartości:

rejestr.SetValue("wersja", "1.0");

2. Odczyt wartości:

wartosc = rejestr.GetValue("wartosc");

3. Skasowanie wartości:

rejestr.DeleteValue("wartosc");

Na koniec zamykamy otwarty klucz:

rejestr.Close();

W ten sposób wykonywaliśmy pracę na wartościach rejestru. Oczywiście podobnie działamy na poszczególnych kluczach. Aby sprawdzić, czy klucz istnieje w systemie i jeżeli nie istnieje to go dodać, wykonujemy:

1. RegistryKey rejestr = Registry.CurrentUser.OpenSubKey("Software\\miotk.eu\\SlepyLos");
2. if (rejestr == null) // Jeżeli nie istnieje to utworzenie nowego
3. {
4. RegistryKey rejestrNew = Registry.CurrentUser.CreateSubKey("Software\\\miotk.eu\\SlepyLos");
5. }

W linii 1. próbujemy otworzyć klucz. W linii 2. sprawdzamy, czy się to nie udało. Jeżeli nie, to w linii 4. dodajemy klucz do rejestru.

Aby usunąć klucz z rejestru wykonujemy:

Registry.CurrentUser.DeleteSubKey("Software\\miotk.eu\\SlepyLos");

Dla ułatwienia istnieje też metoda na usunięcie całego drzewa kluczy:

Registry.CurrentUser.DeleteSubKeyTree("Software\\miotk.eu\\SlepyLos");

I to by było na tyle z podstaw obsługi rejestru systemowego Windows w C#.

 

Komentarze(0)

Podpis:
W celu potwierdzenia, zaznacz pole pod znakiem: P
Capcha
(c)2007-2016 Waldemar Miotk - ostatnia aktualizacja silnika 06.02.2016 - Twój IP: 18.212.83.37. Ta strona, aby lepiej działać, używa plików cookie przechowywanych na komputerach użytkowników. Wszystkie prawa do tekstów zamieszczonych na stronie są zastrzeżone, chyba że przy konkretnym tekście znajduje się inna informacja.
go up