C++对注册表常见操作的封装实现(三)

简介:
/*============================================================  
* 函 数 名:SaveKey  
* 参  数:LPCTSTR [IN] : 待保存的文件名  
* 功能描述:通过保存的文件名称,保存对应的子键  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::SaveKey( LPCTSTR lpFileName )   
{   
    assert( m_hKey );   
    assert( lpFileName );   
       
    long lReturn = RegSaveKey( m_hKey, lpFileName, NULL );   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 保存成功 */  
        return TRUE;   
    }   
    /* 保存失败 */     
    return FALSE;   
}   
  
/*============================================================  
* 函 数 名:RestoreKey  
* 参  数:LPCTSTR [IN] : 待恢复的文件名  
* 功能描述:通过文件名称,从其中导入注册表中  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::RestoreKey( LPCTSTR lpFileName )   
{   
    assert( m_hKey );   
    assert( lpFileName );   
       
    long lReturn = RegRestoreKey( m_hKey, lpFileName, 0);   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 导入成功 */  
        return TRUE;   
    }   
    /* 导入失败 */  
    return FALSE;   
}   
  
/*============================================================  
* 函 数 名:Read  
* 参  数:LPCTSTR CString [IN] : 键值 读取值的类型  
* 功能描述:将指定位置的CString类型的值读出  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::Read( LPCTSTR lpValueName, CString* lpVal )   
{   
    assert( m_hKey );   
    assert( lpValueName );   
    assert( lpVal );   
       
    DWORD dwType;   
    DWORD dwSize=200;   
    char szString[2048];   
    memset( szString, 0, 2048 * sizeof(char) );   
       
    long lReturn = RegQueryValueEx( m_hKey, lpValueName, NULL, &dwType, (BYTE *)szString, &dwSize );   
  
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 查询成功 */  
        *lpVal = szString;   
  
        return TRUE;   
    }   
    /* 查询失败 */  
    return FALSE;      
}   
  
/*============================================================  
* 函 数 名:Read  
* 参  数:LPCTSTR DWORD [IN] : 键值 读取值的类型  
* 功能描述:将指定位置DWORD类型的值读出  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::Read( LPCTSTR lpValueName, DWORD* pdwVal )   
{   
    assert( m_hKey );   
    assert( lpValueName );   
    assert( pdwVal );   
       
    DWORD dwType;   
    DWORD dwSize=sizeof(DWORD);   
    DWORD dwDest;   
    long lReturn = RegQueryValueEx( m_hKey, lpValueName, NULL, &dwType, (BYTE *)&dwDest, &dwSize );   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 查询成功 */  
        *pdwVal = dwDest;   
  
        return TRUE;   
    }   
    /* 查询失败 */  
    return FALSE;      
}   
  
/*============================================================  
* 函 数 名:Read  
* 参  数:LPCTSTR int [IN] : 键值 读取值的类型  
* 功能描述:将指定位置int类型的值读出  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::Read( LPCTSTR lpValueName, int* pnVal)   
{   
    assert( m_hKey );   
    assert( lpValueName );   
    assert( pnVal );   
       
    DWORD dwType;   
    DWORD dwSize=sizeof(DWORD);   
    DWORD dwDest;   
    long lReturn = RegQueryValueEx( m_hKey, lpValueName, NULL, &dwType, (BYTE *)&dwDest, &dwSize );   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 查询成功 */  
        *pnVal=(int)dwDest;   
  
        return TRUE;   
    }   
  
    return FALSE;      
}   
  
/*============================================================  
* 函 数 名:Write  
* 参  数:LPCTSTR LPCTSTR [IN] : 键值 写入值的类型  
* 功能描述:将LPCTSTR类型的值写入指定位置  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::Write( LPCTSTR lpValueName, LPCTSTR lpValue )   
{   
    assert( m_hKey );   
    assert( lpValueName );   
    assert( lpValue );     
  
    long lReturn = RegSetValueEx( m_hKey, lpValueName, 0L, REG_SZ, (const BYTE *) lpValue, strlen(lpValue)+1 );   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 成功写入 */  
        return TRUE;   
    }   
    /* 写入失败 */  
    return FALSE;      
}   
  
/*============================================================  
* 函 数 名:Write  
* 参  数:LPCTSTR DWORD [IN] : 键值 写入值的类型  
* 功能描述:将DWORD类型的值写入指定位置  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::Write( LPCTSTR lpSubKey, DWORD dwVal )   
{   
    assert( m_hKey );   
    assert( lpSubKey );   
       
    long lReturn = RegSetValueEx( m_hKey, lpSubKey, 0L, REG_DWORD, (const BYTE *) &dwVal, sizeof(DWORD) );   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 成功写入 */  
        return TRUE;   
    }   
    /* 写入失败 */  
    return FALSE;      
}   
  
/*============================================================  
* 函 数 名:Write  
* 参  数:LPCTSTR int [IN] : 键值 写入值的类型  
* 功能描述:将整型数写入指定位置  
* 返 回 值:BOOL  
* 抛出异常:  
* 作  者:RainLeaf, 2009年4月10日  
*============================================================*/  
  
BOOL CRegOperator::Write( LPCTSTR lpSubKey, int nVal )   
{   
    assert( m_hKey );   
    assert( lpSubKey );   
       
    DWORD dwValue;   
    dwValue=(DWORD)nVal;   
       
    long lReturn = RegSetValueEx( m_hKey, lpSubKey, 0L, REG_DWORD, (const BYTE *) &dwValue, sizeof(DWORD) );   
       
    if( ERROR_SUCCESS == lReturn )   
    {   
        /* 成功写入 */  
        return TRUE;   
    }   
    /* 写入失败 */  
    return FALSE;      



本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/201905,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 C++ 容器
c++vector容器-赋直操作讲解
c++vector容器-赋直操作讲解
34 0
|
18天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
1月前
|
存储 JSON 安全
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
66 0
|
24天前
|
C语言 C++
C/C++文件读取操作
C/C++文件读取操作
|
29天前
|
存储 算法 数据管理
C++中利用随机策略优化二叉树操作效率的实现方法
C++中利用随机策略优化二叉树操作效率的实现方法
77 1
|
1月前
|
存储 缓存 调度
C++关联容器深度解析:提升数据结构操作的艺术
C++关联容器深度解析:提升数据结构操作的艺术
74 0
|
1月前
|
Unix Linux 测试技术
C++封装详解——从原理到实践
C++封装详解——从原理到实践
46 0
|
1月前
|
存储 程序员 C++
在C++语言中顺序容器的操作
在C++语言中顺序容器的操作
10 0
|
1月前
|
C++
C++ 数据封装的方法,重点是其编程思想
在C++中,数据封装一般指的是将数据和操作这些数据的函数绑定在一起的程序设计方式。通常使用C++的类来实现
36 7
|
1月前
|
C++ 开发者
类和对象一封装一c++中class和struct的区别
类和对象一封装一c++中class和struct的区别
14 0

热门文章

最新文章