/*============================================================ 
* 函 数 名: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;     

本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/eaglewood2005/archive/2009/04/15/4076401.aspx