1. Registry.h
2. Registry.cpp
/** \file Registry.h
** \date 2007/12/11
** \author kimjunju@hotmail.com
**/
#pragma once
/** \class CRegistry
\brief 레지스트리를 관리하는 클래스
*/
/** \ingroup UTIL */
class CRegistry
{
public:
CRegistry(void);
virtual ~CRegistry(void);
public:
BOOL Open(HKEY rootKey, LPCTSTR subKey);
BOOL Close(void);
BOOL CreateKey(HKEY rootKey, LPCTSTR subKey);
BOOL DeleteKey(HKEY rootKey, LPCTSTR subKey);
BOOL SetValue(LPCTSTR valueName, LPCTSTR value);
BOOL SetValue(LPCTSTR valueName, DWORD value);
BOOL SetValueForMultiSz(LPCTSTR valueName, LPCTSTR value, DWORD byteLength);
BOOL GetValue(LPCTSTR valueName, LPCTSTR value, LPDWORD bufferLength);
BOOL GetValue(LPCTSTR valueName, LPDWORD value);
BOOL DeleteValue(LPCTSTR valueName);
private:
HKEY mRootKey;
BOOL mIsOpened;
};
** \date 2007/12/11
** \author kimjunju@hotmail.com
**/
#pragma once
/** \class CRegistry
\brief 레지스트리를 관리하는 클래스
*/
/** \ingroup UTIL */
class CRegistry
{
public:
CRegistry(void);
virtual ~CRegistry(void);
public:
BOOL Open(HKEY rootKey, LPCTSTR subKey);
BOOL Close(void);
BOOL CreateKey(HKEY rootKey, LPCTSTR subKey);
BOOL DeleteKey(HKEY rootKey, LPCTSTR subKey);
BOOL SetValue(LPCTSTR valueName, LPCTSTR value);
BOOL SetValue(LPCTSTR valueName, DWORD value);
BOOL SetValueForMultiSz(LPCTSTR valueName, LPCTSTR value, DWORD byteLength);
BOOL GetValue(LPCTSTR valueName, LPCTSTR value, LPDWORD bufferLength);
BOOL GetValue(LPCTSTR valueName, LPDWORD value);
BOOL DeleteValue(LPCTSTR valueName);
private:
HKEY mRootKey;
BOOL mIsOpened;
};
2. Registry.cpp
#include "stdafx.h"
#include "Registry.h"
CRegistry::CRegistry(void)
{
mRootKey = NULL;
mIsOpened = FALSE;
}
CRegistry::~CRegistry(void)
{
}
BOOL CRegistry::Open(HKEY rootKey, LPCTSTR subKey)
{
if (!subKey)
return FALSE;
if (mIsOpened)
return FALSE;
if (RegOpenKey(rootKey, subKey, &mRootKey) != ERROR_SUCCESS)
return FALSE;
mIsOpened = TRUE;
return TRUE;
}
BOOL CRegistry::Close(void)
{
if (RegCloseKey(mRootKey) != ERROR_SUCCESS)
return FALSE;
mIsOpened = FALSE;
return TRUE;
}
BOOL CRegistry::CreateKey(HKEY rootKey, LPCTSTR subKey)
{
if (!subKey)
return FALSE;
if (mIsOpened)
return FALSE;
if (RegCreateKey(rootKey, subKey, &mRootKey) != ERROR_SUCCESS)
return FALSE;
mIsOpened = TRUE;
return TRUE;
}
BOOL CRegistry::DeleteKey(HKEY rootKey, LPCTSTR subKey)
{
if (!subKey)
return FALSE;
if (RegDeleteKey(rootKey, subKey) != ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValue(LPCTSTR valueName, LPCTSTR value)
{
if (!valueName || !value)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegSetValueEx(mRootKey, valueName, 0, REG_SZ, (BYTE*) value, (DWORD) _tcslen(value) * sizeof(TCHAR))
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValueForMultiSz(LPCTSTR valueName, LPCTSTR value, DWORD byteLength)
{
if (!valueName || !value)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegSetValueEx(mRootKey, valueName, 0, REG_MULTI_SZ, (BYTE*) value, byteLength)
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValue(LPCTSTR valueName, DWORD value)
{
if (!valueName)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegSetValueEx(mRootKey, valueName, 0, REG_DWORD, (BYTE*) &value, sizeof(DWORD))
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::GetValue(LPCTSTR valueName, LPCTSTR value, LPDWORD bufferLength)
{
DWORD ValueType = 0;
if (!valueName || !value || !bufferLength)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegQueryValueEx(mRootKey, valueName, 0, &ValueType, (BYTE*) value, bufferLength)
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::GetValue(LPCTSTR valueName, LPDWORD value)
{
DWORD ValueType = 0;
DWORD BufferLength = sizeof(DWORD);
if (!valueName || !value)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegQueryValueEx(mRootKey, valueName, 0, &ValueType, (BYTE*) value, &BufferLength)
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::DeleteValue(LPCTSTR valueName)
{
if (!valueName)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegDeleteValue(mRootKey, valueName) != ERROR_SUCCESS)
return FALSE;
return TRUE;
}
#include "Registry.h"
CRegistry::CRegistry(void)
{
mRootKey = NULL;
mIsOpened = FALSE;
}
CRegistry::~CRegistry(void)
{
}
BOOL CRegistry::Open(HKEY rootKey, LPCTSTR subKey)
{
if (!subKey)
return FALSE;
if (mIsOpened)
return FALSE;
if (RegOpenKey(rootKey, subKey, &mRootKey) != ERROR_SUCCESS)
return FALSE;
mIsOpened = TRUE;
return TRUE;
}
BOOL CRegistry::Close(void)
{
if (RegCloseKey(mRootKey) != ERROR_SUCCESS)
return FALSE;
mIsOpened = FALSE;
return TRUE;
}
BOOL CRegistry::CreateKey(HKEY rootKey, LPCTSTR subKey)
{
if (!subKey)
return FALSE;
if (mIsOpened)
return FALSE;
if (RegCreateKey(rootKey, subKey, &mRootKey) != ERROR_SUCCESS)
return FALSE;
mIsOpened = TRUE;
return TRUE;
}
BOOL CRegistry::DeleteKey(HKEY rootKey, LPCTSTR subKey)
{
if (!subKey)
return FALSE;
if (RegDeleteKey(rootKey, subKey) != ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValue(LPCTSTR valueName, LPCTSTR value)
{
if (!valueName || !value)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegSetValueEx(mRootKey, valueName, 0, REG_SZ, (BYTE*) value, (DWORD) _tcslen(value) * sizeof(TCHAR))
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValueForMultiSz(LPCTSTR valueName, LPCTSTR value, DWORD byteLength)
{
if (!valueName || !value)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegSetValueEx(mRootKey, valueName, 0, REG_MULTI_SZ, (BYTE*) value, byteLength)
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValue(LPCTSTR valueName, DWORD value)
{
if (!valueName)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegSetValueEx(mRootKey, valueName, 0, REG_DWORD, (BYTE*) &value, sizeof(DWORD))
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::GetValue(LPCTSTR valueName, LPCTSTR value, LPDWORD bufferLength)
{
DWORD ValueType = 0;
if (!valueName || !value || !bufferLength)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegQueryValueEx(mRootKey, valueName, 0, &ValueType, (BYTE*) value, bufferLength)
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::GetValue(LPCTSTR valueName, LPDWORD value)
{
DWORD ValueType = 0;
DWORD BufferLength = sizeof(DWORD);
if (!valueName || !value)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegQueryValueEx(mRootKey, valueName, 0, &ValueType, (BYTE*) value, &BufferLength)
!= ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::DeleteValue(LPCTSTR valueName)
{
if (!valueName)
return FALSE;
if (!mIsOpened)
return FALSE;
if (RegDeleteValue(mRootKey, valueName) != ERROR_SUCCESS)
return FALSE;
return TRUE;
}
Tag | wrapping class



댓글을 달아 주세요
레지스트리 접근이 필요해 검색하던 중 방문하게 되었습니다.
우선 저의 시간을 절약하게 해주셔서 감사드립니다.
그리고 간단하게 수정이 필요한 부분이 발견되어 적어 봅니다.
BOOL GetValue(LPCTSTR valueName, LPCTSTR value, LPDWORD bufferLength);
LPCTSTR value 이 부분의 형식을 LPTSTR 로 변경을 해야 합니다.
CString 형을 무심코 사용하다. 오버플로를 만나 살펴 보니... ^^;
그럼 즐프 하세요~
오 그런 세심한 부분이.. 감사합니다.