提供一個極簡的 MFC 輔助類 CReg,封裝 RegCreateKey/RegSetValueEx/RegQueryValueEx,專注於 字串型 (REG_SZ) 鍵值的讀寫,適合 Win9x/NT 早期專案快速整合。
class CReg
{
public:
// 寫入字串值,鍵不存在自動創建
// 返回 ERROR_SUCCESS 表示成功
static LONG SetValue(HKEY hRoot, LPCTSTR lpSubKey, LPCTSTR pszKey, LPCTSTR pszData);
// 讀取字串值到 CString
// 返回 ERROR_SUCCESS 表示成功,失敗可用 FormatMessage 取得錯誤描述
static LONG GetValue(HKEY hRoot, LPCTSTR lpSubKey, LPCTSTR pszKey, CString& strVal);
};
hRoot:根鍵,如 HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE。lpSubKey:子鍵路徑,如 _T("Software\\MyApp")。pszKey:值名稱。pszData / strVal:字串資料。// 寫入
CString strVal = _T("New Setting");
CReg::SetValue(HKEY_CURRENT_USER, _T("Software\\MyApp"), _T("Setting1"), strVal);
// 讀取
CString strRead;
if (CReg::GetValue(HKEY_CURRENT_USER, _T("Software\\MyApp"), _T("Setting1"), strRead) == ERROR_SUCCESS)
{
// 成功,strRead 為 "New Setting"
}
SetValue:RegCreateKey → RegSetValueEx(hKey, pszKey, 0, REG_SZ, (BYTE*)pszData, (lstrlen(pszData)+1)*sizeof(TCHAR))。GetValue:RegCreateKey → RegQueryValueEx 先查大小 → 分配緩衝 → 二次查詢填充 CString。REG_SZ,不處理 REG_DWORD, REG_BINARY 等類型。CString 換為 std::string/wstring 並自行管理緩衝即可。代碼簡潔、無額外依賴,適合舊專案快速加入註冊表持久化配置。