需求:應用啟動時讀取上次保存的視窗可見性設定,關閉時寫入。利用 Microsoft.Win32.Registry 操作 HKCU\Software\RegistryStorage,封裝靜態工具類,附帶單元測試驗證。
using Microsoft.Win32;
using System;
namespace Backend {
public enum PageVisibility { Visible, Hide }
public static class RegistryStorage {
private const string SubKeyPath = @"Software\RegistryStorage";
private const string ValueName = "PageVisibility";
public static PageVisibility Load() {
using (var key = Registry.CurrentUser.OpenSubKey(SubKeyPath)) {
if (key == null) return PageVisibility.Visible;
var val = key.GetValue(ValueName) as string;
return Enum.TryParse(val, out PageVisibility pv) ? pv : PageVisibility.Visible;
}
}
public static void Save(PageVisibility visibility) {
using (var key = Registry.CurrentUser.CreateSubKey(SubKeyPath)) {
key.SetValue(ValueName, visibility.ToString());
}
}
}
}
RegistryKey,無需手動 Close()。using System;
using System.Diagnostics;
namespace Backend.Test {
class Program {
static void Main() {
// 測試 Hide
RegistryStorage.Save(PageVisibility.Hide);
Debug.Assert(RegistryStorage.Load() == PageVisibility.Hide);
// 測試 Visible
RegistryStorage.Save(PageVisibility.Visible);
Debug.Assert(RegistryStorage.Load() == PageVisibility.Visible);
Console.WriteLine("All tests passed. Press any key to exit.");
Console.ReadKey();
}
}
}
Debug.Assert 僅在 Debug 建置生效,Release 自動移除,零性能損耗。

HKEY_CURRENT_USER\Software\RegistryStoragePageVisibility = "Hide" (REG_SZ)Save<T>(string name, T value) / Load<T>(string name, T defaultValue) 支援任意可序列化類型(JSON 序列化後存字串)。此模式輕量、無依賴、原生支援,是 WinForms/WPF 桌面應用持久化用戶偏好設定的首選方案。