C# Registryschlüssel auslesen und ändern Problem bei Windows XP

Nero80

Lt. Junior Grade
Registriert
Jan. 2009
Beiträge
450
Wie oben bereits aus der Überschrift zu entnehmen ist habe ich ein kleines Problem beim ändern eines Registryschlüssel von XP.

Ich möchte mit Hilfe von zwei Radio-Buttons und einem Button den Wert des Schlüssels zu 0 oder 1 wechseln können.

Was will ich damit erreichen?
Ich möchte damit gerne die Dateiendungen von Windows XP an- und ausschalten.
Dachte mir mit der Registry ist das eine gute Methode aber anscheinend hab ich nen Fehler in meinem Code, da sich nichts in der Registry tuht

der Pfad zum Schlüssel lautet:

HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced

der Schlüssel ist folgender:


hier mein Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace CSS_Conf_Changer
{
public partial class Dateiendungen : Form
{
public Dateiendungen()
{
InitializeComponent();
}


private void Dateiendungen_Load(object sender, EventArgs e)
{

dateiendungen_lbl_grb.Text = "Hier kannst du kannst du die Dateiendungen für Windows XP aktivieren oder auch deaktivieren." +
"\n" + "!! Zur Verwendung dieses Tools sollten sie aktiviert sein !!";
}

private void dateiendungen_btn_Click(object sender, EventArgs e)
{
if (dateiendungen_rdb1.Checked == true)
{
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", "HideFileExt", "1");
}

if (dateiendungen_rdb2.Checked == true)
{
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", "HideFileExt", "0");
}
}
}
}

Würde mich freuen wenn mir einer Helfen könnte
 
hui, also woran es nun liegt weiß ich nicht aber ich kann ja mal raten.

Ersten sieht mir die pfad angabe nicht ganz richtig aus, zweitens kann ich mir vorstellen das evtl. erst bestimmte rechte erfragt werden müssen, drittens bin ich nicht sicher ob deine if avfragen so richtig sind. habe in c# zwar noch nie mit ner GUI gearbeitet aber auf ein Feld direkt zugreifen ist nie gut, lieber das objekt abfragen. Dazu bekommst du ja auch ein sender objekt.

deine if abfragen bereiten mir aber auch deswegen bauchschmerzen weil auf == true zu testen ist reichlich sinnfrei, if abfragen werden so oder so immer nach true evaluiert.

Code:
if (dateiendungen_rdb1.Checked)
reicht vollkommen

und da nur einer von 2 zuständen möglich ist kannst du dir auch die zweite if abfrage sparen und einfach alles in einen else block reinhauen.

Und guck mal nach was denn überhauot in idateiendungen_rdb1.Checked steht, ob er in die Funktion reinspringt, was in den if abfragen passiert etc. Dafür gibts debugger ;)
 
Ohne Angabe eines Typs wird es REG_SZ, also:

Code:
Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", "0", RegistryValueKind.DWord);

Funktioniert einwandfrei.

bzw in der Funktion:
Code:
private void dateiendungen_btn_Click(object sender, EventArgs e)
{
Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", dateiendungen_rdb1.Checked ? "1":"0", RegistryValueKind.DWord);
}
 
Zuletzt bearbeitet:
Zurück
Oben