/***********************************************************************/ /* Copyright (C) 2002 Definitive Solutions, Inc. All Rights Reserved. */ /* THIS COMPUTER PROGRAM IS PROPRIETARY AND CONFIDENTIAL TO DEFINITIVE */ /* SOLUTIONS, INC. AND ITS LICENSORS AND CONTAINS TRADE SECRETS OF */ /* DEFINITIVE SOLUTIONS, INC. THAT ARE PROVIDED PURSUANT TO A WRITTEN */ /* AGREEMENT CONTAINING RESTRICTIONS ON USE AND DISCLOSURE. ANY USE, */ /* REPRODUCTION, OR TRANSFER EXCEPT AS PROVIDED IN SUCH AGREEMENT */ /* IS STRICTLY PROHIBITED. */ /***********************************************************************/ ///////////////////////////////////////////////////////////////////////////// // How to add this class to your application. // // Add MyRegistry.cpp and MyRegistry.h to your project in the usual folders. ///////////////////////////////////////////////////////////////////////////// #if ! defined(MYREGISTRYH_C79464B9_B253_4916_9A49_30B8ED7FF57D_INCLUDED_) #define MYREGISTRYH_C79464B9_B253_4916_9A49_30B8ED7FF57D_INCLUDED_ #pragma once ///////////////////////////////////////////////////////////////////////////// // MyRegistry // Declare the class depending on this file is in an EXE project or a DLL one. class #ifdef _WINDLL AFX_EXT_CLASS #endif MyRegistry : public CObject { // Construction. public: MyRegistry(); MyRegistry(HKEY hRootKey, const CString& sSubKey, bool bCreate = true); virtual ~MyRegistry(); // Declared but not defined. private: MyRegistry(const MyRegistry& rhs); MyRegistry& operator=(const MyRegistry& rhs); // Interface. public: bool Open(HKEY hRootKey, const CString& sKey, bool bCreate = true); bool IsOpen() const { return (NULL != m_hSubKey); } CString GetSubKeyName() const { return m_sSubKey; } bool Close(); bool SaveValueString(const CString& sValue, const CString& sData); bool SaveValueString(UINT uiValueID, const CString& sData); bool SaveValueBool(const CString& sValueName, bool bData); bool SaveValueBool(UINT uiValueID, bool bValue); bool SaveValueInt(const CString& sValueName, int nData); bool SaveValueInt(UINT uiValueID, int nData); bool SaveValueUINT(const CString& sValueName, UINT uiData); bool SaveValueUINT(UINT uiValueID, UINT uiData); bool SaveValueBinary(const CString& sValue, BYTE* pData, DWORD dwDataLen); bool SaveValueBit(const CString& sValue, BYTE bit, bool bData); bool SaveValueBitCloak(BYTE bitValue, bool bData); bool SaveValueDWord(UINT uiValueID, DWORD dwData); bool SaveValueDWord(const CString& sValue, DWORD dwData); bool SaveValueDWordEncrypt(const CString& sValue, DWORD dwData); bool SaveValueDWordEncrypt(UINT uiValueID, DWORD dwData); bool ReadValueString(const CString& sValue, CString& sData) const; bool ReadValueString(UINT uiValueID, CString& sData) const; bool ReadValueMultiString(const CString& sValueName, char * pszData) const; bool ReadValueBool(const CString& sValueName, bool& bData) const; bool ReadValueBool(UINT uiValueID, bool& bData) const; bool ReadValueInt(const CString& sValueName, int& nData) const; bool ReadValueInt(UINT uiValueID, int& nData) const; bool ReadValueUINT(const CString& sValueName, UINT& uiData) const; bool ReadValueUINT(UINT uiValueID, UINT& uiData) const; bool ReadValueBinary(const CString& sValue, BYTE* pData, DWORD& dwDataLen) const; bool ReadValueBit(const CString& sValue, BYTE bit, bool& bData) const; bool ReadValueBitCloak(BYTE bitValue, bool& bData) const; bool ReadValueDWord(UINT uiValueID, DWORD& dwData) const; bool ReadValueDWord(const CString& sValue, DWORD& dwData) const; bool ReadValueDWordEncrypt(const CString& sValue, DWORD& dwData); bool ReadValueDWordEncrypt(UINT uiValueID, DWORD& dwData); bool DeleteValue(const CString& sValue); bool DeleteKey(const CString& sSubKey); bool EnumSubKeys(CStringList& slSubKeys); bool EnumValues(CStringList& slValues, CDWordArray& dwaTypes); bool ValidateBitCloak(const CString& sValue) const; void FlipBit(DWORD& dwValue, int nBit) const; // Implementation. private: LONG RecursiveDelete(HKEY hSubKey, const CString& sSubkey); // Data. private: HKEY m_hRootKey; // Handle to the Registry root key; // i.e., HKEY_LOCAL_MACHINE. CString m_sSubKey; // String for key. HKEY m_hSubKey; // Handle to the Registry key. }; #endif // MYREGISTRYH_C79464B9_B253_4916_9A49_30B8ED7FF57D_INCLUDED_