Programiranje

Kako dostopati do registra Windows s pomočjo C #

Microsoft .Net vam omogoča programski dostop do registra Windows za shranjevanje in pridobivanje podatkov. Register Windows je hierarhična baza podatkov, ki vsebuje zbirko ključev, podključev, vnaprej določenih ključev, panjev in vnosov vrednosti ter se lahko uporablja za shranjevanje podatkov, specifičnih za sistem ali aplikacijo. MSDN navaja: "Register deluje kot osrednje skladišče informacij za operacijski sistem in aplikacije v računalniku."

Registrski sistem Windows lahko izkoristite za shranjevanje konfiguracijskih metapodatkov vaših aplikacij, tako da jih lahko pozneje po potrebi pridobite.

Register Windows hrani hierarhično naslednje vrste informacij.

  1. Informacije o uporabniškem profilu
  2. Informacije o strojni opremi vašega sistema
  3. Nastavitve lastnosti
  4. Informacije o nameščenih programih v vašem sistemu

Upoštevajte, da morate biti pri ravnanju z registrom sistema Windows še posebej previdni. Pred kakršnimi koli spremembami je priporočljivo narediti varnostno kopijo registra, da jih boste lahko po potrebi povrnili nazaj. Varnostno kopijo registra Windows lahko ustvarite tako, da sledite tem korakom.

  1. V meniju Start izberite Zaženi
  2. Vnesite Regedit in pritisnite Enter, da prikličete urejevalnik registra Windows
  3. Zdaj kliknite Datoteka -> Izvozi
  4. V pogovornem oknu "Shrani kot" navedite ime
  5. Izberite določeno vejo ali možnost »Vse«, da izvozite celotne podatke registra
  6. Kliknite Shrani

Podatki o vašem registru bodo shranjeni v datoteki .reg z imenom, ki ste ga navedli. Zdaj lahko programsko upravljate z bazo podatkov registra.

Delo z registrom sistema Windows v jeziku C #

Ključe, podključe in vrednosti iz registra Windows lahko programsko berete, pišete in brišete. Ključi registra so mape v vašem sistemu Windows. Upoštevajte, da ima lahko ključ podključe - podobno kot mapa lahko vsebuje podmape v sebi. Za delo z registrom sistema Windows s pomočjo C # lahko izkoristite razred registra v imenskem prostoru Microsoft.Win32.

Poglejmo zdaj nekaj kode. V tem poglavju bomo raziskali, kako lahko s pomočjo C # ustvarimo, preberemo ali izbrišemo podključe iz registra Windows.

Če želite ustvariti nov podključ, lahko izkoristite metodo CreateSubKey, kot je prikazano spodaj.

Registry.CurrentUser.CreateSubKey (@ "PROGRAMSKA OPREMA \");

Metoda CreateSubKey ustvari nov podključ in ga vrne - vrsta vrnitve je RegistryKey. Naslednji delček kode prikazuje, kako lahko ustvarite nov podključ z imenom in v njem shranite vrednosti ključa.

z uporabo (ključ RegistryKey = Registry.CurrentUser.CreateSubKey (@ "PROGRAMSKA OPREMA \"))

           {

key.SetValue ("Ključ 1", "Vrednost 1");

key.SetValue ("Ključ 2", "Vrednost 2");

key.Close ();

           }  

Za branje vrednosti iz podključa lahko uporabite naslednjo metodo.

statični niz ReadSubKeyValue (podključ niza, ključ niza)

       {

niz str = string.Empty;

z uporabo (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (subKey))

           {

if (registerKey! = null)

               {

str = registerKey.GetValue (ključ) .ToString ();

registerKey.Close ();

               }

           }

vrni str;

       }

Metoda ReadSubKeyValue sprejme podključ in ključ kot parameter in iz njega vrne vrednost. Evo, kako lahko pokličete metodo ReadSubKeyValue.

statična praznina Main (string [] args)

       {

niz subKey = @ "PROGRAMSKA OPREMA \";

niz str = ReadSubKeyValue (podKljuč, "Ključ 1");

Console.WriteLine (str);

Console.Read ();

       }

Podključ lahko tudi izbrišete s statično metodo DeleteSubKey. Naslednji seznam kod ponazarja, kako to lahko storite.

statični bool DeleteKey (niz KeyName)

       {

poskusite

           {

Registry.CurrentUser.DeleteSubKey (KeyName);

vrni res;

           }

ulov

           {

vrni false;

           }

       }

Zgornja metoda vrne true, če je izbris podključa uspešen, sicer pa false. Morda boste želeli preveriti, ali podključ obstaja, preden ga poskušate izbrisati - tako bodo spremembe izjem, ki jih vržete, minimalne. Prepuščam vam, da spremenite zgornjo kodo, da vključite to spremembo.

Vse podključe določenega ključa lahko tudi pridobite z uporabo metode GetSubKeyNames razreda RegistryKey. Naslednji delček kode prikazuje, kako je to mogoče doseči.

statični seznam GetChildSubKeys (ključ niza)

       {

Seznam lstSubKeys = nov seznam ();

poskusite

          {

z uporabo (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (ključ))

               {

če (! (registerKey == null))

                   {

string [] temp = registryKey.GetSubKeyNames ();

foreach (niz str v temp)

                       {

lstSubKeys.Add (str);

                       }

                   }

               }

           }

ulov

           {

// Tukaj napišite kodo za obdelavo izjem

           }

vrni lstSubKeys;

       }

Če želite uporabiti metodo GetChildSubKeys in pridobiti vse podključe določenega ključa, lahko napišete naslednjo kodo.

Seznam lstSubKeys = GetChildSubKeys (podKljuč);

$config[zx-auto] not found$config[zx-overlay] not found