#ifndef _REG_H_ #define _REG_H_ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // REG.H // // Registry manipulation // // Copyright 1986-1998 Microsoft Corporation, All Rights Reserved // #include // ======================================================================== // // CLASS CRegKey // class CRegKey { // // The raw HKEY // HKEY m_hkey; // NOT IMPLEMENTED // CRegKey& operator=( const CRegKey& ); CRegKey( const CRegKey& ); public: // CREATORS // CRegKey() : m_hkey(NULL) {} ~CRegKey() { if ( m_hkey ) (VOID) RegCloseKey( m_hkey ); } // MANIPULATORS // DWORD DwCreate( HKEY hkeyBase, LPCWSTR lpwszSubkeyPath ) { Assert( !m_hkey ); return RegCreateKeyW( hkeyBase, lpwszSubkeyPath, &m_hkey ); } DWORD DwOpen( HKEY hkeyBase, LPCWSTR lpwszSubkeyPath, REGSAM regsam = KEY_READ ) { Assert( !m_hkey ); return RegOpenKeyExW( hkeyBase, lpwszSubkeyPath, 0, regsam, &m_hkey ); } DWORD DwOpen( const CRegKey& regkey, LPCWSTR lpwszSubkeyPath, REGSAM regsam = KEY_READ ) { return DwOpen( regkey.m_hkey, lpwszSubkeyPath, regsam ); } DWORD DwOpenA( HKEY hkeyBase, LPCSTR pszSubkeyPath, REGSAM regsam = KEY_READ ) { Assert( !m_hkey ); return RegOpenKeyExA( hkeyBase, pszSubkeyPath, 0, regsam, &m_hkey ); } DWORD DwOpenA( const CRegKey& regkey, LPCSTR pszSubkeyPath, REGSAM regsam = KEY_READ ) { return DwOpenA( regkey.m_hkey, pszSubkeyPath, regsam ); } // ACCESSORS // DWORD DwSetValue( LPCWSTR lpwszValueName, DWORD dwValueType, const VOID * lpvData, DWORD cbData ) const { Assert( m_hkey ); return RegSetValueExW( m_hkey, lpwszValueName, 0, dwValueType, reinterpret_cast(lpvData), cbData ); } DWORD DwQueryValue( LPCWSTR lpwszValueName, VOID * lpvData, DWORD * pcbData, DWORD * pdwType = NULL ) const { Assert( m_hkey ); return RegQueryValueExW( m_hkey, lpwszValueName, NULL, // lpReserved (must be NULL) pdwType, reinterpret_cast(lpvData), pcbData ); } DWORD DwQueryValueA( LPCSTR lpszValueName, VOID * lpvData, DWORD * pcbData, DWORD * pdwType = NULL ) const { Assert( m_hkey ); return RegQueryValueExA( m_hkey, lpszValueName, NULL, // lpReserved (must be NULL) pdwType, reinterpret_cast(lpvData), pcbData ); } DWORD DwEnumSubKeyA( DWORD iSubKey, LPCSTR pszSubKey, DWORD * pcchSubKey ) const { FILETIME ftUnused; Assert( m_hkey ); return RegEnumKeyExA( m_hkey, iSubKey, const_cast(pszSubKey), pcchSubKey, NULL, // Reserved NULL, // Class not required NULL, // Class not required &ftUnused ); } DWORD DwEnumSubKey( DWORD iSubKey, LPCWSTR pwszSubKey, DWORD * pcchSubKey ) const { FILETIME ftUnused; Assert( m_hkey ); return RegEnumKeyExW( m_hkey, iSubKey, const_cast(pwszSubKey), pcchSubKey, NULL, // Reserved NULL, // Class not required NULL, // Class not required &ftUnused ); } }; #endif // !defined(_REG_H_)