|
|
//
// Registry.cpp
//
#include "stdafx.h"
#include "Registry.h"
CRegistry::CRegistry() { m_hkey = NULL; bhkeyValid = FALSE; }
CRegistry::~CRegistry() { Close(); }
CRegistry::CRegistry(const TCHAR *pszSubKey, HKEY hkey) { m_hkey = NULL; bhkeyValid = FALSE; Open(pszSubKey, hkey); }
BOOL CRegistry::Open(const TCHAR *pszSubKey, HKEY hkey) { Close(); m_error = RegCreateKey(hkey, pszSubKey, &m_hkey); if (m_error) bhkeyValid = FALSE; else bhkeyValid = TRUE; return bhkeyValid; }
BOOL CRegistry::Close() { if (bhkeyValid) RegCloseKey(m_hkey); m_hkey = NULL; bhkeyValid = FALSE; return TRUE; }
BOOL CRegistry::CreateKey(const TCHAR *pszSubKey) { HKEY hKey; m_error = RegCreateKey(m_hkey, pszSubKey, &hKey); if(m_error) return FALSE; return TRUE; }
BOOL CRegistry::DeleteKey(const TCHAR *pszSubKey) { m_error = RegDeleteKey(m_hkey,pszSubKey); if(m_error) return FALSE; else return TRUE; }
LONG CRegistry::SetValue(const TCHAR *pszValue, DWORD dwNumber) { if (bhkeyValid) { m_error = RegSetValueEx(m_hkey, pszValue, 0, REG_DWORD, (BYTE *)&dwNumber, sizeof(dwNumber)); } return m_error; }
LONG CRegistry::GetValue(const TCHAR *pszValue, DWORD dwDefault) { DWORD dwType = REG_DWORD; long dwNumber = 0L; DWORD dwSize = sizeof(dwNumber); if (bhkeyValid) { m_error = RegQueryValueEx(m_hkey, (LPTSTR) pszValue, 0, &dwType, (LPBYTE)&dwNumber, &dwSize); } if (m_error) dwNumber = dwDefault; return dwNumber; }
VOID CRegistry::MoveToSubKey(const TCHAR *pszSubKeyName) { HKEY _hNewKey; if (bhkeyValid) { m_error = RegOpenKey ( m_hkey, pszSubKeyName, &_hNewKey ); if (m_error == ERROR_SUCCESS) { RegCloseKey(m_hkey); m_hkey = _hNewKey; } } }
LONG CRegistry::EnumerateKeys(DWORD dwIndex,TCHAR *pszKeyName, DWORD dwSize) { FILETIME ft; LONG lError = 0; memset(pszKeyName,0,sizeof(pszKeyName));
lError = RegEnumKeyEx(m_hkey, // handle to key to enumerate
dwIndex, // index of subkey to enumerate
pszKeyName, // address of buffer for subkey name
&dwSize, // address for size of subkey buffer
NULL, // reserved
NULL, // address of buffer for class string
NULL, // address for size of class buffer
&ft // address for time key last written to
);
return lError; }
|