⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmregistry.h

📁 TOOL (Tiny Object Oriented Language) is an easily-embedded, object-oriented, C++-like-language inter
💻 H
字号:
#ifndef VM_REGISTRY_H_INCLUDED
#define VM_REGISTRY_H_INCLUDED
/*****************************************************************************/
/*                           HEADER FILE                                     */
/*****************************************************************************/
/*
       $Archive: $

      $Revision: $
          $Date: $
        $Author: $

   Description: Definition of the Registry class.
*/
/*****************************************************************************/



#define THIS_SUB_KEY           false
#define ALL_SUB_KEYS           true
#define SIGNAL_EVENT           true
#define WAIT_FOR_CHANGE        false

#include "VMString.h"
#include "VMByteArray.h"

// helper enumerations
//
enum Keys
{
  keyLocalMachine         = (DWORD) HKEY_LOCAL_MACHINE,
  keyClassesRoot          = (DWORD) HKEY_CLASSES_ROOT,
  keyPerformanceData      = (DWORD) HKEY_PERFORMANCE_DATA,
  keyUsers                = (DWORD) HKEY_USERS,
  keyCurrentUser          = (DWORD) HKEY_CURRENT_USER,
#if ( WINVER >= 0x400 )
  keyCurrentConfiguration = (DWORD) HKEY_CURRENT_CONFIG,
  keyDynamicData          = (DWORD) HKEY_DYN_DATA
#endif
};

enum KeyValueTypes
{
  typeBinary                 = REG_BINARY,
  typeDoubleWord             = REG_DWORD,
  typeDoubleWordLittleEndian = REG_DWORD_LITTLE_ENDIAN,
  typeDoubleWordBigEndian    = REG_DWORD_BIG_ENDIAN,
  typeUnexpandedString       = REG_EXPAND_SZ,
  typeSymbolicLink           = REG_LINK,
  typeMultipleString         = REG_MULTI_SZ,
  typeNone                   = REG_NONE,
  typeResourceList           = REG_RESOURCE_LIST,
  typeString                 = REG_SZ
};

enum CreateOptions
{
   optionsNonVolatile = REG_OPTION_NON_VOLATILE,
   optionsVolatile    = REG_OPTION_VOLATILE
};

enum CreatePermissions
{
  permissionAllAccess        = KEY_ALL_ACCESS,
  permissionCreateLink       = KEY_CREATE_LINK,
  permissionCreateSubKey     = KEY_CREATE_SUB_KEY,
  permissionEnumerateSubKeys = KEY_ENUMERATE_SUB_KEYS,
  permissionExecute          = KEY_EXECUTE,
  permissionNotify           = KEY_NOTIFY,
  permissionQueryValue       = KEY_QUERY_VALUE,
  permissionRead             = KEY_READ,
  permissionSetValue         = KEY_SET_VALUE,
  permissionWrite            = KEY_WRITE
};

enum CreationDisposition
{
  dispositionCreatedNewKey     = REG_CREATED_NEW_KEY,
  dispositionOpenedExistingKey = REG_OPENED_EXISTING_KEY
};

enum NotifyChangeFlag
{
  changeKeyAndSubkeys    = true,
  changeSpecifiedKeyOnly = false
};

enum NotifyChangeFilter
{
  notifyName       = REG_NOTIFY_CHANGE_NAME,
  notifyAttributes = REG_NOTIFY_CHANGE_ATTRIBUTES,
  notifyLastSet    = REG_NOTIFY_CHANGE_LAST_SET,
  notifySecurity   = REG_NOTIFY_CHANGE_SECURITY
};


class VMRegistry
{
public:
  VMRegistry( void );
  virtual ~VMRegistry( void );

  // public methods
  //
  virtual bool Close( void );
  virtual bool Connect( HKEY hKeyToOpen = HKEY_CURRENT_USER,
                        LPCTSTR lpSystemName = NULL );
 
  virtual bool Create(  LPCTSTR               lpSubKey, 
                        LPCTSTR               lpClassName   = NULL,
                        CreateOptions         xOptions      = optionsNonVolatile, 
                        CreatePermissions     xPermissions  = permissionAllAccess, 
                        LPSECURITY_ATTRIBUTES pxSecurity    = NULL,
                        CreationDisposition*  pxDisposition = NULL );

  virtual bool CreateNode(  LPCTSTR               lpSubKey, 
                            LPCTSTR               lpClassName   = NULL,
                            CreateOptions         xOptions      = optionsNonVolatile, 
                            CreatePermissions     xPermissions  = permissionAllAccess, 
                            LPSECURITY_ATTRIBUTES pxSecurity    = NULL,
                            CreationDisposition*  pxDisposition = NULL );

  virtual bool DeleteKey( LPCTSTR pchDeleteKey );
  virtual bool DeleteValue( LPCTSTR pchDelete );

  virtual bool EnumerateKeys( const DWORD dwIdxSubKey, 
                              VMString& roNameSubKey, 
                              VMString& roClassName );

  virtual bool EnumerateValues( const DWORD    dwIdx, 
                                VMString&       roValueName, 
                                KeyValueTypes& roKeyType,
                                LPBYTE         pbBuffer,
                                DWORD&         dwBufferSize );
  virtual bool Flush( void );

  virtual bool GetBinaryValue( LPCTSTR roValueName, VMByteArray& roArrayOut );

  virtual void GetClassName( VMString& roClassName ) const;

  virtual void GetComputerName( VMString& roComputerName ) const;

  virtual bool GetDoubleWordValue( LPCTSTR lpValueName, DWORD& dwReturn );

  virtual bool GetErrorCode( void ) const;

  virtual void GetKeyName( VMString& roKeyName ) const;

  virtual DWORD GetNumberOfSubkeys( void ) const;

  virtual DWORD GetNumberOfValues( void ) const;

  virtual void GetRegistryName( VMString& registry_name ) const;

  virtual bool GetSecurity( const SECURITY_INFORMATION xSecurityInfo,
                            PSECURITY_DESCRIPTOR       pSecurityDescriptor,
                            DWORD&                     dwBufferSize );

  virtual bool GetStringValue( LPCTSTR lpValue, VMString& roReturn );

  virtual bool GetValue( LPCTSTR lpValueName, VMByteArray& roArrayOut );
  virtual bool GetValue( LPCTSTR lpValueName, DWORD& rdwReturn );
  virtual bool GetValue( LPCTSTR lpValueName, VMString& roReturn );

  virtual bool Load( LPCTSTR lpSubkeyName, LPCTSTR lpFileName );
  virtual bool NotifyChange( const HANDLE hEvent      = NULL,
                             const NotifyChangeFilter = notifyLastSet,
                             const bool bWatchSubtree = changeSpecifiedKeyOnly,
                             const bool bWaitOrSignal = WAIT_FOR_CHANGE );

  virtual bool Open( LPCTSTR lpKeyName, const CreatePermissions xAccessMask = permissionAllAccess );
  virtual bool QueryInfo( void );
  virtual bool QueryValue( LPCTSTR        lpValueName, 
                           KeyValueTypes& rxKeyType, 
                           LPBYTE         lpBufferOut, 
                           DWORD&         rdwBufferSize );

  virtual bool Replace( LPCTSTR lpszSubKeyName,
                        LPCTSTR lpszNewDataFileName,
                        LPCTSTR lpszBackupFileName );

  virtual bool Restore( LPCTSTR lpszSavedTreeFile, 
                        const DWORD dwVolatilityFlags = NULL );

  virtual bool Save( LPCTSTR lpszSaveTreeFile, LPSECURITY_ATTRIBUTES pxSecurity );

  virtual bool SetBinaryValue( LPCTSTR lpszNameOfValue, 
                               const VMByteArray& roByteArrayToWrite );

  virtual bool SetDoubleWordValue( LPCTSTR lpszValueName, DWORD dwToWrite );

  virtual bool SetSecurity( const SECURITY_INFORMATION& pxSecurityInfo,
                            const PSECURITY_DESCRIPTOR  pxSecurityDescriptor );

  virtual bool SetStringValue( LPCTSTR lpszValueName, const VMString& roStringToWrite );


  virtual bool SetValue( LPCTSTR lpszValueName, const VMByteArray& roBytesToWrite );
  virtual bool SetValue( LPCTSTR lpszValueName, DWORD dwValue );
  virtual bool SetValue( LPCTSTR lpszValueName, const VMString& roStringToWrite );
  virtual bool SetValue( LPCTSTR             lpszValueName, 
                         const KeyValueTypes xValueType, 
                         const PBYTE         pData, 
                         const DWORD         dwDataSize );

  virtual bool UnLoad( LPCTSTR lpszSubkeyToUnload );

private:
  void Initialize( void );

protected:
  HKEY       m_KeyHandle;
  HKEY       m_RegistryHandle;
  LONG       m_ErrorCode;
  VMString   m_ClassName;
  VMString   m_ComputerName;
  VMString   m_KeyName;
  VMString   m_RegistryName;
  DWORD      m_NumberOfSubkeys;
  DWORD      m_NumberOfValues;

  // Data items filled in by QueryInfo
  //
  DWORD    m_LongestSubkeyNameLength;
  DWORD    m_LongestClassNameLength;
  DWORD    m_LongestValueNameLength;
  DWORD    m_LongestValueDataLength;
  DWORD    m_SecurityDescriptorLength;
  FILETIME m_LastWriteTime;
};


#endif


/*****************************************************************************/
/* Check-in history */
/*
*$Log: $
*/
/*****************************************************************************/



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -