|
|
//
// Registry.h
//
#pragma once
#ifdef __cplusplus
// Note: For strong type checking in the Query functions, #define _REG_STRONGTYPES
#ifndef _REG_STRONGTYPES
#define _REG_STRONGTYPES 1
#endif
// Set _REG_ALLOCMEM to 0 to disable functions which allocate memory
#ifndef _REG_ALLOCMEM
#define _REG_ALLOCMEM 1
#endif
class CRegistry { public: CRegistry(); CRegistry(HKEY hkeyParent, LPCTSTR pszKey, DWORD dwAccessFlags = KEY_ALL_ACCESS, BOOL bCreateIfMissing = TRUE); ~CRegistry();
void CloseKey(); BOOL OpenKey(HKEY hkeyParent, LPCTSTR pszKey, REGSAM dwAccessFlags = KEY_ALL_ACCESS); BOOL CreateKey(HKEY hkeyParent, LPCTSTR pszKey, REGSAM dwAccessFlags = KEY_ALL_ACCESS); BOOL OpenSubKey(LPCTSTR pszKey, REGSAM dwAccessFlags = KEY_ALL_ACCESS); BOOL CreateSubKey(LPCTSTR pszKey, REGSAM dwAccessFlags = KEY_ALL_ACCESS); BOOL DeleteSubKey(LPCTSTR pszKey);
DWORD GetValueSize(LPCTSTR pszValueName); BOOL DoesValueExist(LPCTSTR pszValueName);
BOOL DeleteValue(LPCTSTR pszValueName);
#ifdef _AFX
BOOL QueryStringValue(LPCTSTR pszValueName, CString& strResult); CString QueryStringValue(LPCTSTR pszValueName); BOOL SetStringValue(LPCTSTR pszValueName, const CString& strData); #endif
BOOL QueryStringValue(LPCTSTR pszValueName, LPTSTR pszBuf, int cchBuf, int* pNumCharsWritten); int QueryStringValue(LPCTSTR pszValueName, LPTSTR pszBuf, int cchBuf); BOOL SetStringValue(LPCTSTR pszValueName, LPCTSTR pszData); LPTSTR QueryStringValue(LPCTSTR pszValueName, int* pNumCharsWritten);
DWORD QueryDwordValue(LPCTSTR pszValueName, DWORD dwDefault = 0); BOOL QueryDwordValue(LPCTSTR pszValueName, DWORD* pVal); BOOL SetDwordValue(LPCTSTR pszValueName, DWORD dwVal);
BOOL SetBinaryValue(LPCTSTR pszValueName, LPCVOID pvData, DWORD cbData);
int QueryIntValue(LPCTSTR pszValueName); BOOL QueryIntValue(LPCTSTR pszValueName, int* pVal); BOOL SetIntValue(LPCTSTR pszValueName, int nVal);
BOOL DeleteAllValues(); BOOL CloneSubKey(LPCTSTR pszExistingSubKey, CRegistry& regDest, BOOL bRecursive); BOOL CloneSubKey(LPCTSTR pszExistingSubKey, LPCTSTR pszNewSubKey, BOOL bRecursive);
public: HKEY m_hKey; };
//
// Inline functions
//
inline CRegistry::CRegistry() { m_hKey = NULL; }
inline BOOL CRegistry::DoesValueExist(LPCTSTR pszValueName) { return (BOOL)GetValueSize(pszValueName); }
inline BOOL CRegistry::DeleteValue(LPCTSTR pszValueName) { if (m_hKey) return (ERROR_SUCCESS == RegDeleteValue(m_hKey, pszValueName)); else return FALSE; }
inline int CRegistry::QueryStringValue(LPCTSTR pszValueName, LPTSTR pszBuf, int cchBuf) { if (QueryStringValue(pszValueName, pszBuf, cchBuf, &cchBuf)) return cchBuf; else return 0; }
inline DWORD CRegistry::QueryDwordValue(LPCTSTR pszValueName, DWORD dwDefault /*=0*/) { DWORD dwVal = dwDefault; QueryDwordValue(pszValueName, &dwVal); return dwVal; }
inline int CRegistry::QueryIntValue(LPCTSTR pszValueName) { return (int)QueryDwordValue(pszValueName); }
inline BOOL CRegistry::QueryIntValue(LPCTSTR pszValueName, int* pVal) { return QueryDwordValue(pszValueName, (DWORD*)pVal); }
inline BOOL CRegistry::SetIntValue(LPCTSTR pszValueName, int nVal) { return SetDwordValue(pszValueName, (DWORD)nVal); }
#endif // __cplusplus
|