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.
- Brukerprofilinformasjon
- Maskinvareinformasjon for systemet ditt
- Eiendomsinnstillinger
- 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.
- Velg Start fra Start
- Skriv Regedit og trykk Enter for å påkalle Windows Registerredigering
- Klikk nå Fil -> Eksporter
- Angi et navn i dialogboksen "Lagre som"
- Velg en bestemt gren eller alternativet "Alle" for å eksportere hele registerinformasjonen
- 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);