📄 vmregistry.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 + -