Dưới đây là đoạn code làm việc tôi đã phát triển cho cả đọc và viết ONLY Đăng ký 32 bit. Nó hoạt động trong cả ứng dụng 32 bit và 64 bit. Cuộc gọi 'đọc' cập nhật sổ đăng ký nếu giá trị không được đặt, nhưng nó rất rõ ràng làm thế nào để loại bỏ điều đó. Nó yêu cầu .Net 4.0 và sử dụng các phương thức OpenBaseKey/OpenSubKey.
Tôi hiện đang sử dụng nó để cho phép dịch vụ nền 64 bit và ứng dụng khay 32 bit truy cập cùng một khóa registry liền mạch.
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;
}
}
}
Cách sử dụng: Đặt điều này trong tập tin lớp riêng của nó (.cs) và gọi nó là như vậy:
using SimpleSettings;
string mysetting = Settings.read("SETTINGNAME","DEFAULTVALUE");
Nguồn
2017-05-16 21:38:50
thể trùng lặp của [Visual Studio 2010 Thiết lập dự án 64 bit tạo registry vấn đề quan trọng] (http://stackoverflow.com/questions/7384270/visual-studio-2010-setup-project-64-bit-create-registry-key-issue) –