Programmering

Sådan får du adgang til Windows-registreringsdatabasen ved hjælp af C #

Microsoft .Net giver dig adgang til Windows-registreringsdatabasen programmatisk for at gemme og hente data. Windows-registreringsdatabasen er en hierarkisk database, der består af en samling af nøgler, undernøgler, foruddefinerede nøgler, nældefeber og værdiposter og kan bruges til at gemme systemspecifikke eller applikationsspecifikke data. MSDN siger: "Registret fungerer som et centralt lager af information til operativsystemet og applikationerne på en computer."

Du kan drage fordel af Windows-registreringsdatabasen til at gemme konfigurationsmetadata for dine applikationer, så du kan hente dem på et senere tidspunkt, hvis det er nødvendigt.

Windows-registreringsdatabasen gemmer følgende typer oplysninger på en hierarkisk måde.

  1. Brugerprofiloplysninger
  2. Hardwareoplysninger om dit system
  3. Ejendomsindstillinger
  4. Oplysninger om installerede programmer i dit system

Bemærk, at du skal være ekstra forsigtig, når du manipulerer Windows-registreringsdatabasen. Det tilrådes at tage backup af din registreringsdatabase, før du foretager ændringer, så du kan tilbagekalde disse ændringer, hvis det er nødvendigt. Du kan oprette en sikkerhedskopi af dit Windows-registreringsdatabase ved at følge disse trin.

  1. Vælg Kør fra Start
  2. Skriv Regedit, og tryk på Enter for at påkalde Windows Registreringseditor
  3. Klik nu på File -> Export
  4. Angiv et navn i dialogboksen "Gem som"
  5. Vælg en bestemt gren eller "Alle" for at eksportere hele registreringsinformationen
  6. Klik på Gem

Dine registreringsoplysninger gemmes i en .reg-fil med det angivne navn. Du er nu sikker på at manipulere din registerdatabase programmatisk.

Arbejde med Windows-registreringsdatabasen i C #

Du kan programmatisk læse, skrive og slette nøgler, undernøgler og værdier fra Windows-registreringsdatabasen. Du kan overveje, at registreringsdatabasenøgler er mapper i dit Windows-system. Bemærk, at en nøgle kan have undernøgler - på samme måde som en mappe kan indeholde undermapper inde i den. For at arbejde med Windows-registreringsdatabasen ved hjælp af C # kan du drage fordel af registreringsdatabasen i Microsoft.Win32-navneområdet.

Lad os nu grave i noget kode. I dette afsnit undersøger vi, hvordan vi kan oprette, læse eller slette undernøgler fra Windows-registreringsdatabasen ved hjælp af C #.

For at oprette en ny undernøgle kan du drage fordel af CreateSubKey-metoden som vist nedenfor.

Registry.CurrentUser.CreateSubKey (@ "SOFTWARE \");

CreateSubKey-metoden opretter en ny undernøgle og returnerer den - returtypen er RegistryKey. Følgende kodestykke viser, hvordan du kan oprette en ny undernøgle med navnet og gemme nøglen - værdier inde i den.

ved hjælp af (RegistryKey key = Registry.CurrentUser.CreateSubKey (@ "SOFTWARE \"))

           {

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

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

key.Close ();

           }  

Følgende metode kan bruges til at læse en værdi fra en undernøgle.

statisk streng ReadSubKeyValue (streng subKey, strengnøgle)

       {

streng str = streng. tom;

ved hjælp af (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (subKey))

           {

hvis (registryKey! = null)

               {

str = registryKey.GetValue (nøgle) .ToString ();

registryKey.Close ();

               }

           }

returnere str;

       }

ReadSubKeyValue-metoden accepterer en undernøgle og en nøgle som parameter og returnerer værdien ud af den. Sådan kan du kalde ReadSubKeyValue-metoden.

statisk ugyldigt Main (streng [] args)

       {

streng subKey = @ "SOFTWARE \";

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

Console.WriteLine (str);

Console.Read ();

       }

Du kan også slette en undernøgle ved hjælp af den statiske metode DeleteSubKey. Følgende kodeliste illustrerer, hvordan du kan gøre dette.

statisk bool DeleteKey (streng KeyName)

       {

prøve

           {

Registry.CurrentUser.DeleteSubKey (KeyName);

returner sandt;

           }

fangst

           {

returner falsk;

           }

       }

Ovenstående metode returnerer sandt, hvis sletning af undernøglen er en succes, ellers falsk. Det kan være en god idé at kontrollere, om undernøglen findes, før du forsøger at slette den - på den måde er ændringerne af undtagelser, der smides, minimale. Jeg overlader til dig at ændre ovenstående kode for at indarbejde denne ændring.

Du kan også hente alle undernøglerne til en bestemt nøgle ved hjælp af GetSubKeyNames-metoden i RegistryKey-klassen. Følgende kodestykke illustrerer, hvordan dette kan opnås.

statisk liste GetChildSubKeys (strengnøgle)

       {

Liste lstSubKeys = ny liste ();

prøve

          {

ved hjælp af (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (nøgle))

               {

hvis (! (registryKey == null))

                   {

streng [] temp = registryKey.GetSubKeyNames ();

foreach (strengstreng i temp)

                       {

lstSubKeys.Add (str);

                       }

                   }

               }

           }

fangst

           {

// Skriv din brugerdefinerede undtagelseshåndteringskode her

           }

returnere lstSubKeys;

       }

For at bruge GetChildSubKeys-metoden og hente alle undernøgler for en bestemt nøgle kan du skrive følgende kode.

Liste lstSubKeys = GetChildSubKeys (subKey);

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