Programmēšana

Kā piekļūt Windows reģistram, izmantojot C #

Microsoft .Net ļauj programmatiski piekļūt Windows reģistram, lai uzglabātu un izgūtu datus. Windows reģistrs ir hierarhiska datu bāze, kas sastāv no atslēgu, apakšatslēgu, iepriekš definētu atslēgu, nātrene un vērtības ierakstu kolekcijas un ko var izmantot sistēmas specifisko vai lietojumprogrammu datu glabāšanai. MSDN norāda: "Reģistrs darbojas kā centrālā operētājsistēmas un datora lietojumprogrammu informācijas krātuve."

Varat izmantot Windows reģistra priekšrocības, lai saglabātu savu lietojumprogrammu konfigurācijas metadatus, lai vajadzības gadījumā tos varētu izgūt vēlāk.

Windows reģistrs hierarhiskā veidā saglabā šādus informācijas veidus.

  1. Informācija par lietotāja profilu
  2. Jūsu sistēmas aparatūras informācija
  3. Īpašuma iestatījumi
  4. Informācija par jūsu sistēmā instalētajām programmām

Ņemiet vērā, ka, rīkojoties ar Windows reģistru, jums vajadzētu būt īpaši piesardzīgam. Pirms jebkādu izmaiņu veikšanas ieteicams dublēt reģistru, lai vajadzības gadījumā varētu šīs izmaiņas atjaunot. Veicot šīs darbības, varat izveidot sava Windows reģistra dublējumu.

  1. Sākumā atlasiet Palaist
  2. Ierakstiet Regedit un nospiediet taustiņu Enter, lai izsauktu Windows reģistra redaktoru
  3. Tagad noklikšķiniet uz Fails -> Eksportēt
  4. Dialoglodziņā "Saglabāt kā" norādiet nosaukumu
  5. Atlasiet konkrētu filiāli vai opciju “Visi”, lai eksportētu visu reģistra informāciju
  6. Noklikšķiniet uz Saglabāt

Jūsu reģistra informācija tiks saglabāta .reg failā ar jūsu norādīto vārdu. Tagad varat droši programmatiski manipulēt ar reģistra datu bāzi.

Darbs ar Windows reģistru C #

Jūs varat programmēti lasīt, rakstīt un dzēst atslēgas, apakšatslēgas un vērtības no Windows reģistra. Jūs varat uzskatīt, ka reģistra atslēgas ir mapes jūsu Windows sistēmā. Ņemiet vērā, ka atslēgai var būt apakšatslēgi ​​- tāpat kā mapē tajā var būt apakšmapes. Lai strādātu ar Windows reģistru, izmantojot C #, varat izmantot reģistra klases priekšrocības Microsoft.Win32 vārdu telpā.

Tagad iedziļināsimies kādā kodā. Šajā sadaļā mēs izpētīsim, kā mēs varam izveidot, lasīt vai dzēst apakšatslēgas no Windows reģistra, izmantojot C #.

Lai izveidotu jaunu apakšatslēgu, varat izmantot metodes CreateSubKey priekšrocības, kā parādīts zemāk.

Registry.CurrentUser.CreateSubKey (@ "PROGRAMMATŪRA \");

Metode CreateSubKey izveido jaunu apakšatslēgu un to atdod - atgriešanas veids ir RegistryKey. Šis koda fragments parāda, kā jūs varat izveidot jaunu apakšatslēgu ar nosaukumu un tajā saglabāt atslēgas vērtības.

izmantojot [RegistryKey key = Registry.CurrentUser.CreateSubKey (@ "SOFTWARE \"))

           {

key.SetValue ("Key 1", "Value 1");

key.SetValue ("Key 2", "Value 2");

atslēga. Aizvērt ();

           }  

Lai nolasītu vērtību no apakšatslēga, var izmantot šo metodi.

statiskā virkne ReadSubKeyValue (virknes subKey, virknes atslēga)

       {

virkne str = virkne. Tukšs;

izmantojot [RegistryKey registerKey = Registry.CurrentUser.OpenSubKey (subKey)]

           {

ja (registerKey! = null)

               {

str = registerKey.GetValue (atslēga) .ToString ();

registerKey.Close ();

               }

           }

atgriešanās str;

       }

Metode ReadSubKeyValue pieņem apakšatslēgu un atslēgu kā parametru un atgriež no tā vērtību. Lūk, kā jūs varat izsaukt metodi ReadSubKeyValue.

static void Main (virkne [] args)

       {

virkne subKey = @ "PROGRAMMATŪRA \";

virkne str = ReadSubKeyValue (subKey, "Key 1");

Console.WriteLine (str);

Konsole. Lasīt ();

       }

Apakšatslēgu var arī izdzēst, izmantojot statisko metodi DeleteSubKey. Šis kodu saraksts parāda, kā jūs to varat izdarīt.

static bool DeleteKey (virkne KeyName)

       {

mēģiniet

           {

Registry.CurrentUser.DeleteSubKey (KeyName);

atgriezties taisnība;

           }

noķert

           {

atgriezties nepatiesa;

           }

       }

Iepriekš minētā metode atgriež vērtību true, ja apakšatslēgu dzēšana ir veiksmīga, pretējā gadījumā - false. Pirms mēģināt to izdzēst, iespējams, vēlēsities pārbaudīt, vai apakšatslēga pastāv - tādā veidā izmetamo izņēmumu izmaiņas ir minimālas. Atstāju jums modificēt iepriekš minēto kodu, lai iekļautu šīs izmaiņas.

Varat arī izgūt visus konkrētās atslēgas apakšatslēgas, izmantojot klases RegistryKey metodi GetSubKeyNames. Šis koda fragments parāda, kā to var panākt.

statiskais saraksts GetChildSubKeys (virknes atslēga)

       {

Saraksts lstSubKeys = jauns saraksts ();

mēģiniet

          {

izmantojot [RegistryKey registerKey = Registry.CurrentUser.OpenSubKey (atslēga)]

               {

ja (! (registerKey == null))

                   {

virkne [] temp = registerKey.GetSubKeyNames ();

foreach (virkne str temp)

                       {

lstSubKeys.Add (str);

                       }

                   }

               }

           }

noķert

           {

// Šeit ierakstiet savu pielāgoto izņēmumu apstrādes kodu

           }

atgriešanās lstSubKeys;

       }

Lai izmantotu metodi GetChildSubKeys un izgūtu visus konkrētās atslēgas apakšatslēgus, varat ierakstīt šādu kodu.

Saraksts lstSubKeys = GetChildSubKeys (subKey);

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