Hier ist der Arbeits Code, den ich sowohl entwickelt haben, lesen und schreiben nur die 32-Bit-Registrierung. Es funktioniert in 32-Bit- und 64-Bit-Anwendungen. Der 'read'-Aufruf aktualisiert die Registrierung, wenn der Wert nicht festgelegt ist, aber es ist sehr offensichtlich, wie dieser entfernt wird. Es erfordert .NET 4.0 und verwendet die OpenBaseKey/OpenSubKey-Methoden.
Ich verwende es derzeit, um einen 64-Bit-Hintergrunddienst und eine 32-Bit-Tray-Anwendung nahtlos auf dieselben Registrierungsschlüssel zugreifen zu können.
using Microsoft.Win32;
namespace SimpleSettings
{
public class Settings
{
private static string RegistrySubKey = @"SOFTWARE\BlahCompany\BlahApp";
public static void write(string setting, string value)
{
using (RegistryKey registryView = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
using (RegistryKey registryCreate = registryView.CreateSubKey(RegistrySubKey))
using (RegistryKey registryKey = registryView.OpenSubKey(RegistrySubKey, true))
{
registryKey.SetValue(setting, value, RegistryValueKind.String);
}
}
public static string read(string setting, string def)
{
string output = string.Empty;
using (RegistryKey registryView = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
using (RegistryKey registryCreate = registryView.CreateSubKey(RegistrySubKey))
using (RegistryKey registryKey = registryView.OpenSubKey(RegistrySubKey, false))
{
// Read the registry, but if it is blank, update the registry and return the default.
output = (string)registryKey.GetValue(setting, string.Empty);
if (string.IsNullOrWhiteSpace(output))
{
output = def;
write(setting, def);
}
}
return output;
}
}
}
Verbrauch: diese in seiner eigenen Klassendatei (CS-) und sich als solche bezeichnen:
using SimpleSettings;
string mysetting = Settings.read("SETTINGNAME","DEFAULTVALUE");
möglich Duplikat [Visual Studio 2010 Setup-Projekt 64-Bit-Registrierungsschlüssel Ausgabe erstellen] (http://stackoverflow.com/questions/7384270/visual-studio-2010-setup-project-64-bit-create-registry-key-issue) –