Kann mir jemand helfen?
Aufgabe:
Ändern Sie die Listenanzeige für die Registrierung aus dem Studienheft (Kapitel 1.5) so, dass der Anwender selbst auswählen kann, welche Schlüssel beziehungsweise Einträge im zweiten und dritten Listenfeld angezeigt werden.
Im ersten Listenfeld sollen immer fest die Einträge aus dem Schlüssel HKEY_CURRENT_USER angezeigt werden.
Achten Sie bitte darauf, dass die Einträge im zweiten beziehungsweise dritten Listenfeld nur dann angezeigt werden sollen, wenn im ersten beziehungsweise zweiten Listenfeld ein Eintrag markiert ist.
Damit die Lösung nicht zu aufwendig wird, sollen im zweiten Listenfeld immer nur die untergeordneten Schlüssel angezeigt werden. Im dritten Listenfeld dagegen sollen sowohl eventuell vorhandene Unterschlüssel als auch die Einträge angezeigt werden.
Bitte beachten Sie:
Für einige Unterschlüssel im Schlüssel HKEY_CURRENT_USER – wie zum Beispiel Console – gibt es nicht in jedem Fall weitere untergeordnete Schlüssel. Hier befinden sich auf der zweiten Ebene bereits Einträge. Es kann also durchaus sein, dass bei dem einen oder anderen Schlüssel das zweite Listenfeld leer bleibt.
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSHP12D_1._5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ButtonEinlesen_Click(object sender, EventArgs e)
{
//ein Array mit Zeichenketten für die Schlüssel
string[] regSchluesselListe;
//ein Array mit Zeichenketten für die Einträge
string[] regEintragListe;
//den Inhalt der drei Listenfelder löschen
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
//die Schlüssel aus HKEY_CURRENT_USER holen
regSchluesselListe = Registry.CurrentUser.GetSubKeyNames();
//und in das erste Listenfeld eintragen
foreach (string eintrag in regSchluesselListe)
listBox1.Items.Add(eintrag);
//den Schlüssel Software öffnen
using (RegistryKey regSchluessel = Registry.CurrentUser.OpenSubKey("Software"))
{
//und jetzt alle Unterschlüssel für Software lesen
regSchluesselListe = regSchluessel.GetSubKeyNames();
}
//in das zweite Listenfeld eintragen
foreach (string eintrag in regSchluesselListe)
listBox2.Items.Add(eintrag);
//den Schlüssel \Software\Registrierungsdemo öffnen
using (RegistryKey regSchluessel = Registry.CurrentUser.OpenSubKey("Software\\RegistryDemo"))
{
//die Einträge lesen
regEintragListe = regSchluessel.GetValueNames();
//die Namen und die Werte in das dritte Listenfeld schreiben
foreach (string eintrag in regEintragListe)
listBox3.Items.Add(eintrag + " = " + Convert.ToString(regSchluessel.GetValue(eintrag)));
}
}
}
}
Ich weiß nicht, welche Schlüssel genau gemeint sind, die der Anwender selbst auswählen soll.. Hat jemand eine Idee was da umgesetzt werden soll?
Würde mir wahnsinnig weiter helfen. Ich hab die Einheit gut abgeschlossen, habe einen Notenschnitt insgesamt von 1,3, hänge aber leider immer wieder an den Fragstellungen.
Danke