Ehhez találunk egy RegistryKey osztályt a Microsoft.Win32 névtérben. Így használatához erre hivatkoznunk is kell a forráskódunkban:
Mellékelt példában az egyik nyomógomb lenyomásának hatására létrehozunk egy új kulcsot a regisztrációs adatbázisba, majd eltárolunk benne egy szám értéket. Ehhez első lépésként kapcsolatot kell teremtenünk a regisztrációs adatbázissal. Ehhez az OpenRemoteBaseKey függvényt használjuk fel. Itt első paraméterként egy felsorolt típus egy elemét adjuk meg, mely a főkulcsra utal. Értéke az alábbiak egyike lehet:
- ClassesRoot
- CurrentConfig
- CurrentUser
- DynData
- LocalMachine
- PerformanceData
- Users
Második paraméterben pedig a számítógép nevét adhatjuk meg. Null sztring esetén a saját gépről lesz szó.
Miután a kapcsolat létrejött létrehozunk egy új kulcsot, ahol majd az értékünket tároljuk. Ehhez a CreateSubKey függvény használható, mely szintén a RegistryKey osztály része. Itt paraméterként a létrehozandó kulcs nevét kell megadnunk. Ha már létezne az itt megadott kulcs, akkor az megnyitásra kerül. Visszatérési értékként egy RegistryKey objektumot kapunk.
Harmadik lépésként már csak a szükséges érték eltárolása marad hátra. Ebben a SetValue függvény segít bennünket. Ennek első paramétere a tárolási név, a második pedig annak értéke lesz.
protected void button1_Click (object sender, System.EventArgs e)
{
RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, "");
RegistryKey subkey = key.CreateSubKey("Software\\Animare Software\\Sample");
subkey.SetValue("Value", 12345);
}
Egy eltárolt értéket kiolvasni a következő módszerrel tudunk. (Ez található a mellékelt példa második nyomógombjánál.) Szintén kapcsolatot létesítünk a regisztrációs adatbázissal, mint az előbb, majd megnyitjuk azt a kulcsot, melyből olvasni szeretnénk. Ehhez az OpenSubKey-t használjuk, ahol első paraméterként a megnyitandó kulcs nevét adjuk meg, másodikként opcionálisan megadhatunk egy logikai értéket, mely ha igaz, akkor a megnyitott kulcsba írhatunk, módosíthatunk is. Ha ezt nem tesszük, akkor csak olvasható kapcsolatunk lesz.
Az érték kiolvasásához pedig a GetValue függvényt használhatjuk, ahol paraméterként a kiolvasandó érték nevét adjuk meg.
protected void button2_Click (object sender, System.EventArgs e)
{
RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, "");
RegistryKey subkey = key.OpenSubKey("Software\\Animare Software\\Sample");
label1.Text = subkey.GetValue("Value").ToString();
}
Nézzük milyen lehetőségeink vannak még a RegistryKey osztályban.
Egy megnyitott kulcsot a Close függvénnyel zárhatunk le, míg ha törölni szeretnénk, akkor a DeleteSubKey-t használhatjuk, ahol paraméterként a törlendő kulcsot kell átadnunk. Ha a DeleteSubKeyTree-t használjuk törlésre, akkor a paraméterként megadott kulcs összes alkulcsa és értéke is törlésre kerül.
A DeleteValue függvénnyel egy nyitott kulcson belül törölhetünk egy értéket.
A GetSubKeyNames függvény egy sztring tömböt ad vissza az aktuálisan nyitott kulcson belül található alkulcsok neveiről. Ehhez hasonlóan a GetValueNames függvény az adott kulcson található értékek neveivel tér vissza.
Találunk a RegistryKey osztályban még három property-t is. A Name az aktuális kulcsot adja vissza sztringként. A SubKeyCount-ből az adott kulcson belül található alkulcsok számát olvashatjuk ki, míg a ValueCount property-ből az adott kulcson található értékek számát kapjuk meg.