首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

Win9x 註冊表字串讀寫輕量封裝類 CReg

     編輯:關於VC++

提供一個極簡的 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 等類型。
  • 若需去除 MFC 依賴,將 CString 換為 std::string/wstring 並自行管理緩衝即可。

代碼簡潔、無額外依賴,適合舊專案快速加入註冊表持久化配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved