|
|
#ifndef __REGSUPRT_H
#define __REGSUPRT_H
#define REG_OPTION_INVALID 0xFFFFFFFF
// MAX_ROOT is the maximum we support for the root
#define MAX_ROOT MAX_PATH
class CRegSupport { public: CRegSupport(); virtual ~CRegSupport();
public: void RSInitRoot(HKEY hkey, LPCTSTR pszSubKey1, LPCTSTR pszSubKey2, DWORD dwRootOptions = REG_OPTION_VOLATILE, DWORD dwDefaultOptions = REG_OPTION_VOLATILE);
virtual BOOL RSValueExist(LPCTSTR pszSubKey, LPCTSTR pszValueName); virtual BOOL RSSubKeyExist(LPCTSTR pszSubKey);
virtual BOOL RSDeleteValue(LPCTSTR pszSubKey, LPCTSTR pszValueName); virtual BOOL RSDeleteSubKey(LPCTSTR pszSubKey); virtual BOOL RSDeleteKey();
virtual HKEY RSDuplicateRootKey(); virtual HKEY RSDuplicateSubKey(LPCTSTR pszSubKey, BOOL fCreate, BOOL fVolatile);
BOOL RSGetTextValue(LPCTSTR pszSubKey, LPCTSTR pszValueName, LPTSTR pszValue, DWORD* pcchValue); BOOL RSGetBinaryValue(LPCTSTR pszSubKey, LPCTSTR pszValueName, PBYTE pb, DWORD* pcb); BOOL RSGetDWORDValue(LPCTSTR pszSubKey, LPCTSTR pszValueName, DWORD* pdwValue);
BOOL RSSetTextValue(LPCTSTR pszSubKey, LPCTSTR pszValueName, LPCTSTR pszValue, DWORD dwOptions = REG_OPTION_INVALID); BOOL RSSetBinaryValue(LPCTSTR pszSubKey, LPCTSTR pszValueName, PBYTE pb, DWORD cb, DWORD dwOptions = REG_OPTION_INVALID); BOOL RSSetDWORDValue(LPCTSTR pszSubKey, LPCTSTR pszValueName, DWORD dwValue, DWORD dwOptions = REG_OPTION_INVALID);
protected: virtual void _CloseRegSubKey(HKEY hkeyVolumeSubKey);
virtual HKEY _GetRootKey(BOOL fCreate, DWORD dwOptions = REG_OPTION_INVALID);
virtual BOOL _SetGeneric(LPCTSTR pszSubKey, LPCTSTR pszValueName, PBYTE pb, DWORD cb, DWORD dwType, DWORD dwOptions); virtual BOOL _GetGeneric(LPCTSTR pszSubKey, LPCTSTR pszValueName, PBYTE pb, DWORD* pcb);
HKEY _GetSubKey(LPCTSTR pszSubKey, BOOL fCreate, DWORD dwOptions = REG_OPTION_INVALID);
static HKEY _RegCreateKeyExHelper(HKEY hkey, LPCTSTR pszSubKey, DWORD dwOptions); static HKEY _RegOpenKeyExHelper(HKEY hkey, LPCTSTR pszSubKey);
protected: virtual BOOL _InitSetRoot(LPCTSTR pszSubKey1, LPCTSTR pszSubKey2); void _InitCSKeyRoot(); void _EnterCSKeyRoot(); void _LeaveCSKeyRoot();
virtual LPCTSTR _GetRoot(LPTSTR pszRoot, DWORD cchRoot);
protected: LPCTSTR _pszSubKey1; LPCTSTR _pszSubKey2;
private: DWORD _dwRootOptions; DWORD _dwDefaultOptions;
HKEY _hkeyInit; // HKEY_CURRENT_USER, ...
CRITICAL_SECTION _csKeyRoot; BOOL _fcsKeyRoot;
#ifdef DEBUG
static UINT _cRefHKEY; static UINT _cRefExternalHKEY;
BOOL _fInited; #endif
};
#endif //__REGSUPRT_H
|