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

CRegistry:一個實用、易用的 MFC 風格註冊表操作類

     編輯:關於VC++

註冊表操作是 Windows 程式開發的高頻需求,但原生 API(RegOpenKeyEx、RegQueryValueEx...)參數繁瑣、易出錯。本文提供封裝良好的 CRegistry 類,以 MFC 風格介面簡化常見讀寫、建立、刪除、備份/還原操作,附帶完整原始碼可直接納入專案。

類別核心方法一覽

方法功能範例
CreateKey(LPCTSTR lpSubKey)建立指定子鍵CreateKey(_T("Staff"));
Open(LPCTSTR lpSubKey)開啟現有子鍵Open(_T("Software\\Staff"));
Read(LPCTSTR lpValue, CString* pVal)讀取字串值Read(_T("Name"), &str);
Read(LPCTSTR lpValue, DWORD* pVal)讀取 DWORD 值Read(_T("Age"), &dw);
Read(LPCTSTR lpValue, int* pVal)讀取整數值Read(_T("Count"), &n);
Write(LPCTSTR lpValue, LPCTSTR pVal)寫入字串值Write(_T("Name"), _T("John"));
Write(LPCTSTR lpValue, DWORD dwVal)寫入 DWORD 值Write(_T("Age"), 30);
Write(LPCTSTR lpValue, int nVal)寫入整數值Write(_T("Count"), 100);
DeleteKey(HKEY hRoot, LPCTSTR lpSubKey)刪除子鍵(含遞迴)DeleteKey(HKEY_LOCAL_MACHINE, _T("Staff"));
DeleteValue(LPCTSTR lpValue)刪除指定值DeleteValue(_T("Name"));
SaveKey(LPCTSTR lpFile)將鍵/子鍵/值導出 .reg 檔SaveKey(_T("backup.reg"));
RestoreKey(LPCTSTR lpFile)從 .reg 檔還原RestoreKey(_T("backup.reg"));
Close()釋放目前開啟的鍵句柄reg.Close();

典型使用流程

CRegistry reg;
if (reg.Open(_T("Software\\MyApp"))) {
    CString strVer;
    if (reg.Read(_T("Version"), &strVer)) {
        // 讀取成功
    }
    reg.Write(_T("LastRun"), COleDateTime::GetCurrentTime().Format());
    reg.Close();
}

設計亮點

  • 多型 Read/Write:針對 CString/DWORD/int 多載,型別安全。
  • 自動資源管理:建構子初始化,解構子自動 Close(),防止句柄洩漏。
  • 錯誤碼封裝:內部轉換 Win32 錯誤碼為 BOOL,簡化呼叫端判斷。
  • 支援根鍵切換:Open 可指定完整路徑(含 HKEY_CURRENT_USER 等前綴),靈活操作不同根鍵。

原始碼整合

將 Registry.h/cpp 加入專案,#include "Registry.h" 即可使用。無額外依賴,純 Win32 API 實現,相容所有 Windows 版本。

附件提供完整類別實作與簡易測試對話框專案。

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