2、实现文件
view plaincopy to clipboardprint?
/********************************************************************
* 文件名:RegOperator.cpp
* 文件描述:对头文件中定义类的成员函数进行了实现
* 创建人: RainLeaf, 2009年4月10日
* 版本号:1.0
* 修改记录:
*********************************************************************/
#include "RegOperator.h"
/*============================================================
* 函 数 名:CRegOperator
* 参 数:HKEY [IN] : 默认是HKEY_LOCAL_MACHINE
* 功能描述:构造函数,初始化根键
* 返 回 值:无
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
CRegOperator::CRegOperator( HKEY hKey )
{
m_hKey = HKEY_LOCAL_MACHINE;
}
/*============================================================
* 函 数 名:~CRegOperator
* 参 数:NULL [IN]
* 功能描述:析构函数,关闭打开的注册表句柄
* 返 回 值:无
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
CRegOperator::~CRegOperator()
{
Close();
}
/*============================================================
* 函 数 名:Close
* 参 数:NULL [IN]
* 功能描述:关闭打开键的句柄
* 返 回 值:void
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
void CRegOperator::Close()
{
if( m_hKey )
{
/* 句柄非空进行关闭 */
RegCloseKey( m_hKey );
m_hKey = NULL;
}
}
/*============================================================
* 函 数 名:SetHKEY
* 参 数:LPCTSTR [IN] : 根键值
* 功能描述:由传入的根键字符串设置当前操作的根键的值
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::SetHKEY( LPCTSTR strKey )
{
assert( m_hKey );
assert( strKey );
/* 逐个进行比较 */
if( 0 == strcmp(strKey,"HKEY_CLASSES_ROOT") )
{
m_hKey = HKEY_CLASSES_ROOT;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_CURRENT_USER") )
{
m_hKey = HKEY_CURRENT_USER;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_LOCAL_MACHINE") )
{
m_hKey = HKEY_LOCAL_MACHINE;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_USERS") )
{
m_hKey = HKEY_USERS;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_PERFORMANCE_DATA") )
{
m_hKey = HKEY_PERFORMANCE_DATA;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_PERFORMANCE_TEXT") )
{
m_hKey = HKEY_PERFORMANCE_TEXT;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_PERFORMANCE_NLSTEXT") )
{
m_hKey = HKEY_PERFORMANCE_NLSTEXT;
return TRUE;
}
/* 对操作系统版本进行测试 */
#if(WINVER >= 0x0400)
if( 0 == strcmp(strKey,"HKEY_CURRENT_CONFIG") )
{
m_hKey = HKEY_CURRENT_CONFIG;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_DYN_DATA") )
{
m_hKey = HKEY_DYN_DATA;
return TRUE;
}
#endif
return FALSE;
}
/*============================================================
* 函 数 名:OpenKey
* 参 数:LPCTSTR [IN] : 子键字符串
* 功能描述:通过传入子键的字符串打开注册表相应的位置
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::OpenKey( LPCTSTR lpSubKey )
{
assert( m_hKey );
assert( lpSubKey );
HKEY hKey;
long lReturn = RegOpenKeyEx( m_hKey, lpSubKey, 0L, KEY_READ | KEY_WRITE | KEY_EXECUTE, &hKey );
if( ERROR_SUCCESS == lReturn )
{
/* 成功打开则将打开的句柄保存 */
m_hKey = hKey;
return TRUE;
}
/* 打开失败 */
return FALSE;
}
/*============================================================
* 函 数 名:CreateKey
* 参 数:LPCTSTR [IN] : 子键字符串
* 功能描述:通过传入子键的字符串打开(存在子键)或者创建(不存在子键)相应的子键
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::CreateKey( LPCTSTR lpSubKey )
{
assert( m_hKey );
assert( lpSubKey );
HKEY hKey;
DWORD dw;
long lReturn = RegCreateKeyEx( m_hKey, lpSubKey, 0L, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dw);
if( ERROR_SUCCESS == lReturn )
{
/* 成功打开或者创建则将句柄保存 */
m_hKey = hKey;
return TRUE;
}
/* 打开或者创建失败 */
return FALSE;
}
/*============================================================
* 函 数 名:DeleteKey
* 参 数:LPCTSTR LPCTSTR [IN] : 根键值 子键值
* 功能描述:通过传入的根键和子键,将子键删除删除,不能包含子键
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
//BOOL CRegOperator::DeleteKey( HKEY hKey, LPCTSTR lpSubKey )
BOOL CRegOperator::DeleteKey( LPCTSTR lphKey, LPCTSTR lpSubKey )
{
assert( lphKey );
assert( lpSubKey );
assert( m_hKey );
SetHKEY( lphKey );
long lReturn = RegDeleteValue( m_hKey, lpSubKey );
if( ERROR_SUCCESS == lReturn )
{
/* 删除成功 */
return TRUE;
}
/* 删除失败 */
return FALSE;
}
/*============================================================
* 函 数 名:DeleteValue
* 参 数:LPCTSTR [IN] : 要删除键值的名称
* 功能描述:通过传入键值名称,删除对应的键值
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::DeleteValue( LPCTSTR lpValueName )
{
assert( m_hKey );
assert( lpValueName );
long lReturn = RegDeleteValue( m_hKey, lpValueName );
if( ERROR_SUCCESS == lReturn )
{
/* 删除成功 */
return TRUE;
}
/* 删除失败 */
return FALSE;
}
/********************************************************************
* 文件名:RegOperator.cpp
* 文件描述:对头文件中定义类的成员函数进行了实现
* 创建人: RainLeaf, 2009年4月10日
* 版本号:1.0
* 修改记录:
*********************************************************************/
#include "RegOperator.h"
/*============================================================
* 函 数 名:CRegOperator
* 参 数:HKEY [IN] : 默认是HKEY_LOCAL_MACHINE
* 功能描述:构造函数,初始化根键
* 返 回 值:无
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
CRegOperator::CRegOperator( HKEY hKey )
{
m_hKey = HKEY_LOCAL_MACHINE;
}
/*============================================================
* 函 数 名:~CRegOperator
* 参 数:NULL [IN]
* 功能描述:析构函数,关闭打开的注册表句柄
* 返 回 值:无
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
CRegOperator::~CRegOperator()
{
Close();
}
/*============================================================
* 函 数 名:Close
* 参 数:NULL [IN]
* 功能描述:关闭打开键的句柄
* 返 回 值:void
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
void CRegOperator::Close()
{
if( m_hKey )
{
/* 句柄非空进行关闭 */
RegCloseKey( m_hKey );
m_hKey = NULL;
}
}
/*============================================================
* 函 数 名:SetHKEY
* 参 数:LPCTSTR [IN] : 根键值
* 功能描述:由传入的根键字符串设置当前操作的根键的值
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::SetHKEY( LPCTSTR strKey )
{
assert( m_hKey );
assert( strKey );
/* 逐个进行比较 */
if( 0 == strcmp(strKey,"HKEY_CLASSES_ROOT") )
{
m_hKey = HKEY_CLASSES_ROOT;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_CURRENT_USER") )
{
m_hKey = HKEY_CURRENT_USER;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_LOCAL_MACHINE") )
{
m_hKey = HKEY_LOCAL_MACHINE;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_USERS") )
{
m_hKey = HKEY_USERS;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_PERFORMANCE_DATA") )
{
m_hKey = HKEY_PERFORMANCE_DATA;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_PERFORMANCE_TEXT") )
{
m_hKey = HKEY_PERFORMANCE_TEXT;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_PERFORMANCE_NLSTEXT") )
{
m_hKey = HKEY_PERFORMANCE_NLSTEXT;
return TRUE;
}
/* 对操作系统版本进行测试 */
#if(WINVER >= 0x0400)
if( 0 == strcmp(strKey,"HKEY_CURRENT_CONFIG") )
{
m_hKey = HKEY_CURRENT_CONFIG;
return TRUE;
}
if( 0 == strcmp(strKey,"HKEY_DYN_DATA") )
{
m_hKey = HKEY_DYN_DATA;
return TRUE;
}
#endif
return FALSE;
}
/*============================================================
* 函 数 名:OpenKey
* 参 数:LPCTSTR [IN] : 子键字符串
* 功能描述:通过传入子键的字符串打开注册表相应的位置
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::OpenKey( LPCTSTR lpSubKey )
{
assert( m_hKey );
assert( lpSubKey );
HKEY hKey;
long lReturn = RegOpenKeyEx( m_hKey, lpSubKey, 0L, KEY_READ | KEY_WRITE | KEY_EXECUTE, &hKey );
if( ERROR_SUCCESS == lReturn )
{
/* 成功打开则将打开的句柄保存 */
m_hKey = hKey;
return TRUE;
}
/* 打开失败 */
return FALSE;
}
/*============================================================
* 函 数 名:CreateKey
* 参 数:LPCTSTR [IN] : 子键字符串
* 功能描述:通过传入子键的字符串打开(存在子键)或者创建(不存在子键)相应的子键
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::CreateKey( LPCTSTR lpSubKey )
{
assert( m_hKey );
assert( lpSubKey );
HKEY hKey;
DWORD dw;
long lReturn = RegCreateKeyEx( m_hKey, lpSubKey, 0L, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dw);
if( ERROR_SUCCESS == lReturn )
{
/* 成功打开或者创建则将句柄保存 */
m_hKey = hKey;
return TRUE;
}
/* 打开或者创建失败 */
return FALSE;
}
/*============================================================
* 函 数 名:DeleteKey
* 参 数:LPCTSTR LPCTSTR [IN] : 根键值 子键值
* 功能描述:通过传入的根键和子键,将子键删除删除,不能包含子键
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
//BOOL CRegOperator::DeleteKey( HKEY hKey, LPCTSTR lpSubKey )
BOOL CRegOperator::DeleteKey( LPCTSTR lphKey, LPCTSTR lpSubKey )
{
assert( lphKey );
assert( lpSubKey );
assert( m_hKey );
SetHKEY( lphKey );
long lReturn = RegDeleteValue( m_hKey, lpSubKey );
if( ERROR_SUCCESS == lReturn )
{
/* 删除成功 */
return TRUE;
}
/* 删除失败 */
return FALSE;
}
/*============================================================
* 函 数 名:DeleteValue
* 参 数:LPCTSTR [IN] : 要删除键值的名称
* 功能描述:通过传入键值名称,删除对应的键值
* 返 回 值:BOOL
* 抛出异常:
* 作 者:RainLeaf, 2009年4月10日
*============================================================*/
BOOL CRegOperator::DeleteValue( LPCTSTR lpValueName )
{
assert( m_hKey );
assert( lpValueName );
long lReturn = RegDeleteValue( m_hKey, lpValueName );
if( ERROR_SUCCESS == lReturn )
{
/* 删除成功 */
return TRUE;
}
/* 删除失败 */
return FALSE;
}
本文来自CSDN博客,转载请标明出处:
http://blog.csdn.net/eaglewood2005/archive/2009/04/15/4076401.aspx
转载于:https://blog.51cto.com/jazka/201904