Programmering

Slik får du tilgang til Windows-registeret ved hjelp av C #

Microsoft .Net lar deg få tilgang til Windows-registeret programmatisk for å lagre og hente data. Windows-registeret er en hierarkisk database som består av en samling nøkler, undernøkler, forhåndsdefinerte nøkler, elveblest og verdiposter og kan brukes til å lagre systemspesifikke eller applikasjonsspesifikke data. MSDN uttaler: "Registeret fungerer som et sentralt lager for informasjon for operativsystemet og applikasjonene på en datamaskin."

Du kan dra nytte av Windows-registeret til å lagre konfigurasjonsmetadata for applikasjonene dine, slik at du kan hente dem på et senere tidspunkt om nødvendig.

Windows-registeret lagrer følgende typer informasjon på en hierarkisk måte.

  1. Brukerprofilinformasjon
  2. Maskinvareinformasjon for systemet ditt
  3. Eiendomsinnstillinger
  4. Informasjon om installerte programmer i systemet ditt

Merk at du bør være ekstra forsiktig når du manipulerer Windows-registret. Det anbefales å ta sikkerhetskopi av registret ditt før du gjør noen endringer, slik at du kan tilbakestille endringene om nødvendig. Du kan lage en sikkerhetskopi av Windows-registeret ditt ved å følge disse trinnene.

  1. Velg Start fra Start
  2. Skriv Regedit og trykk Enter for å påkalle Windows Registerredigering
  3. Klikk nå Fil -> Eksporter
  4. Angi et navn i dialogboksen "Lagre som"
  5. Velg en bestemt gren eller alternativet "Alle" for å eksportere hele registerinformasjonen
  6. Klikk Lagre

Registerinformasjonen din lagres i en .reg-fil med navnet du har angitt. Du er nå trygg på å manipulere registerdatabasen programmatisk.

Arbeide med Windows-registeret i C #

Du kan programmatisk lese, skrive og slette nøkler, undernøkler og verdier fra Windows-registret. Du kan vurdere registernøkler som mapper i Windows-systemet. Merk at en nøkkel kan ha undernøkler - omtrent på samme måte som en mappe kan inneholde undermapper inne i den. For å jobbe med Windows-registeret ved hjelp av C #, kan du dra nytte av registerklassen i Microsoft.Win32-navneområdet.

La oss nå grave i litt kode. I denne delen vil vi utforske hvordan vi kan opprette, lese eller slette undernøkler fra Windows-registeret ved hjelp av C #.

For å opprette en ny undernøkkel kan du dra nytte av CreateSubKey-metoden som vist nedenfor.

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

CreateSubKey-metoden oppretter en ny undernøkkel og returnerer den - returtypen er RegistryKey. Følgende kodebit viser hvordan du kan opprette en ny undernøkkel med navn og lagre nøkkel - verdier i den.

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

           {

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

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

key.Close ();

           }  

Følgende metode kan brukes til å lese en verdi fra en undernøkkel.

statisk streng ReadSubKeyValue (streng subKey, strengnøkkel)

       {

streng str = streng.Tom;

bruker (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (subKey))

           {

hvis (registryKey! = null)

               {

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

registryKey.Close ();

               }

           }

retur str;

       }

ReadSubKeyValue-metoden godtar en undernøkkel og en nøkkel som parameter og returnerer verdien ut av den. Slik kan du ringe til ReadSubKeyValue-metoden.

statisk tomrom Main (streng [] args)

       {

streng subKey = @ "PROGRAMVARE \";

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

Console.WriteLine (str);

Console.Read ();

       }

Du kan også slette en undernøkkel ved å bruke den statiske metoden DeleteSubKey. Følgende kodeliste illustrerer hvordan du kan gjøre dette.

statisk bool DeleteKey (streng nøkkelnavn)

       {

prøve

           {

Registry.CurrentUser.DeleteSubKey (KeyName);

returner sant;

           }

å fange

           {

returner falsk;

           }

       }

Ovennevnte metode blir sant hvis sletting av undernøkkelen er vellykket, ellers falskt. Det kan være lurt å sjekke om undernøkkelen eksisterer før du prøver å slette den - på den måten er endringene av unntak som blir kastet minimale. Jeg overlater til deg å endre koden ovenfor for å innlemme denne endringen.

Du kan også hente alle undernøklene til en bestemt nøkkel ved hjelp av GetSubKeyNames-metoden i RegistryKey-klassen. Følgende kodebit illustrerer hvordan dette kan oppnås.

statisk liste GetChildSubKeys (strengnøkkel)

       {

Liste lstSubKeys = ny liste ();

prøve

          {

bruker (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (nøkkel))

               {

hvis (! (registryKey == null))

                   {

streng [] temp = registryKey.GetSubKeyNames ();

foreach (strengstreng i temp)

                       {

lstSubKeys.Add (str);

                       }

                   }

               }

           }

å fange

           {

// Skriv din tilpassede unntakshåndteringskode her

           }

returner lstSubKeys;

       }

For å bruke GetChildSubKeys-metoden og hente alle undernøklene til en bestemt nøkkel, kan du skrive følgende kode.

Liste lstSubKeys = GetChildSubKeys (subKey);

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