Laden...

Registrys auslesen und schreiben: Die grundlegenden Operationen

Erstellt von Waffeln vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.409 Views
W
Waffeln Themenstarter:in
17 Beiträge seit 2009
vor 14 Jahren
Registrys auslesen und schreiben: Die grundlegenden Operationen

Hallo ich interessiere mich schon eine weile für Registrys und würde gerne wissen wie ich diese "auslesen" könnte.

Leider habe ich noch keinen Schritt in die richtige richtung gemacht auser eben hier nachzufragen 😉

ich wollte mir daher mal eine Abfrage erstellen ob ein "Ordner" (sieht in regedit mal so aus) denn überhaupt exestiert.

Hab mir mal einen ausgesucht aber auf meinem weg ergab sich da schonmal nichts ^^

HKEY_LOCAL_MACHINE/SOFTWARE/TEST

nun die frage wie ich abfragen kann ob dieser "Ordner" im regedit nun da is oder nicht 😃

U
36 Beiträge seit 2008
vor 14 Jahren

Hallo Waffeln,

ob ein Schlüssel existiert, kannst du wie folgt abfragen :


using Microsoft.Win32;
RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\TEST");
Object value = key.GetValue("XYZ");

Mit diesem Aufruf wird der Schlüssel zum Lesen geöffnet.
Wenn der Schlüssel nicht existiert, erhälst Du für key null zurück.
GetValue liest dann den Wert eines Eintrags, der unter diesem Schlüssel liegt.

Gruß

Michael Schmitz

W
Waffeln Themenstarter:in
17 Beiträge seit 2009
vor 14 Jahren

danke das hat mich schonmal ein stück weiter gebracht ^^ im moment ist jedoch problematisch das ich meine abfrage nur ausführen kann wenn dieser "Ordner" TEST da ist.

//.....
RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\TEST");
Object value = key.GetValue("XYZ");

if(value == "keks")
{
 Console.WriteLine("Ja es ist da :D");
}
else
{
Console.WriteLine("Nö nich da :P");
}

also ich habs jetztmal mit einem vorhandenen "Ordner" probiert und da klappte es einwandfrei auch andersrum als ich XYZ mal auf null gesetzt hab 😉

könnte ich nicht diese "Ordner" vorher erstellen lassen 😄?

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Waffeln,

bitte schau in die :rtfm: Doku, welche Methoden dir die Klassen Registry und RegistryKey bieten. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1.

herbivore

W
Waffeln Themenstarter:in
17 Beiträge seit 2009
vor 14 Jahren

danke ^^ hat mir auch sehr geholfen grade jedoch bleibt ein problem noch ^^

da mein programm falls ein bestimmter key fehlt nämlich jetzt als Example SOFTWARE\Apfel soll das programm halt was machen.

doofe dran ist nur wenn der key fehlt dann crasht mein programm 😃 daher müsste ich eine abfrage machen ob der key nun da is oder nich die abfrage von Hotzenplotz lässt ihn ja lediglich einen Wert auslesen und wenn die datei die den wert hält nicht da ist isses halt null jedoch ist der ganze key nicht da gibts einen error und das programm crasht.

EDIT: Problem gelöst hab eine Try catch funktion eingebaut ^^

Großes 'THX an alle 😃

C
17 Beiträge seit 2009
vor 14 Jahren

Nun, die einfachste (aber nicht unbedingt perfekte) Lösung wäre ein Exceptionhandling. Beschäftige dich mal damit (Stichworte try-catch), etc.

Da ich denke, dass sowas zu den Grundlagen gehört, solltest du dich selbst in die Problematik einlesen und ich werde dir hier keinen Code posten 😉

/edit : Hui, da warst du schneller

=)

2.760 Beiträge seit 2006
vor 14 Jahren

Aber bitte nicht die Registry dazu benutzen deine Einstellungen dort abzulegen. Das ist quasi "veraltet".

W
Waffeln Themenstarter:in
17 Beiträge seit 2009
vor 14 Jahren

😉 das fände ich eig so schlecht nun auchnicht aber ich hab ein config programm geschrieben das halt die config von einem andren programm (das die config daten im reg schreibt) gemacht 😛 da man sonst immer alles manuell machen muss xP

Veraltert 😃 aber noch brauchbar ^^ find ich immernoch besser als XML oder INI dateien xP oder kennste ne bessere lösung ^^

2.760 Beiträge seit 2006
vor 14 Jahren

Ja, kenne ich: [Tutorial] Das neue Konfigurationsmodell im .NET Framework 2.0

Ich arbeite auch häufig mit dem XmlSerailizer und der Xsd.exe (bzw. folgendem Studio-Plugin: WSCF - lässt sich auch wenn man das auf den ersten Blick nicht vermuten würde nicht nur für Webservices einsetzen) um meine Konfiguration in den Griff zu bekommen.

Ein kurzes Beispiel:1.Erstelle zuerst eine XML-Datei z.B.:


<?xml version="1.0" encoding="utf-8" ?>
<Queries>
   <Query Name="Top 100 Bla">
      <Sql>SELECT TOP 100 * FROM Bla</Sql>
      <AppliesTo></AppliesTo>
   </Query>
   <Query Name="Top 200 Blubb">
      <Sql>SELECT TOP 200 * FROM Blubb</Sql>
      <AppliesTo></AppliesTo>
   </Query>
</Queries>

1.Dann erstellst du dir manuell oder mit dem Studio eine XSD dazu. (VS: XML->Create Schema) 1.Mit dem Plugin oder der Xsd.exe kannst du dir dann C#-Code erzeugen lassen der sich sofort mit dem XmlSerializer serialisieren und deserialisieren lässt. So etwa:


         XmlSerializer queriesSerializer = new XmlSerializer(typeof(Queries));

         Queries queries = new Queries(_globalQueries);

         using (FileStream fs = new FileStream(@"Bla.xml", FileMode.OpenOrCreate, FileAccess.Write))
         {
            queriesSerializer.Serialize(fs, queries);
         }

U
1.688 Beiträge seit 2007
vor 14 Jahren

Hallo,

ich weiß nicht, was Du gegen XML hast - das ist wesentlich flexibler, als das Speichern in der Registry. Du siehst ja schon, dass Du ein eigenes Programm schreiben musst, um eine Konfiguration zu kopieren. Mit XML wär' das nicht passiert.

Außerdem ist Schreiben unter HKEY_LOCAL_MACHINE im Normalfall auch nicht sinnvoll (jeder Nutzer will seine eigenen Einstellungen und meist verbieten Zugriffsrechte das Schreiben).

W
Waffeln Themenstarter:in
17 Beiträge seit 2009
vor 14 Jahren

an sich habe ich nichts gegen xml ich finde nur zb ini dateien optisch viel besser als xml naklar is das wieder ein streitthema ^^ aber soviel optionen gibts nun auch wieder net 😉 xml kommt bei mir schon in gebraucht nur zb benutz ich LUA viel lieber.

ansicht halt _