新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → 注册表操作的类 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 2426 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 注册表操作的类 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 注册表操作的类

    #if !defined _REG_H
    #define _REG_H

    /************************************************************************
    * 文件名:    reg.h
    * 文件描述:  注册表读写
    *************************************************************************/

    class CReg : public CObject
    {
    public:
    CReg(HKEY hRootKey = HKEY_LOCAL_MACHINE); //构造函数带有默认参数
    virtual ~CReg();

    public:
    BOOL VerifyKey (LPCTSTR pszPath);
    BOOL VerifyValue (LPCTSTR pszValue);

    BOOL CreateKey (LPCTSTR pszPath);
    void Close();

    BOOL DeleteValue (LPCTSTR pszValue);
    BOOL DeleteKey (LPCTSTR pszPath);

    BOOL Write (LPCTSTR pszKey, int iVal);
    BOOL Write (LPCTSTR pszKey, DWORD dwVal);
    BOOL Write (LPCTSTR pszKey, LPCTSTR pszVal);

    BOOL Read (LPCTSTR pszKey, int& iVal);
    BOOL Read (LPCTSTR pszKey, DWORD& dwVal);
    BOOL Read (LPCTSTR pszKey, CString& sVal);

    BOOL IsEqual(LPCTSTR pszValue,int nn);
    BOOL IsEqual(LPCTSTR pszValue,DWORD dw);
    BOOL IsEqual(LPCTSTR pszValue,LPCTSTR lpsz);

    protected:
    HKEY  m_hSubKey;    //保存打开的子键句柄
    HKEY    m_hRootKey;   //保存根键句柄
    };

    #endif


    #include "stdafx.h"
    #include "reg.h"

    /*================================================================
    * 函数名:    CReg
    * 参数:      (HKEY hRootKey)
    * 说明:      如果构造函数不带参数,则使用默认的参数,m_hRootKey被初始化
         为HKEY_LOCAL_MACHINE, 如果带有参数则 m_hRootKey为指定的值
    ================================================================*/
    CReg::CReg(HKEY hRootKey)
    {
    m_hRootKey = hRootKey;
    }

    CReg::~CReg() //在析构函数中关闭打开注册表句柄
    {
    Close();
    }

    /*================================================================
    * 函数名:    VerifyKey
    * 参数:      (HKEY hRootKey, LPCTSTR pszPath)
    * 功能描述:   判断给定的路径是否存在 (兼有打开的功能)
         如果第一个参数为NULL,则使用默认的根键。
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::VerifyKey (LPCTSTR pszPath)
    {
      LONG ReturnValue = ::RegOpenKeyEx (m_hRootKey, pszPath, 0L,
              KEY_ALL_ACCESS, &m_hSubKey);

    if(ReturnValue == ERROR_SUCCESS)
      return TRUE;

    return FALSE;
    }


    /*================================================================
    * 函数名:    VerifyValue
    * 参数:      (LPCTSTR pszValue)
    * 功能描述:   判断给定的值是否存在 (请先调用VerifyKey,然后在使用该函数)
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::VerifyValue (LPCTSTR pszValue)
    {
    LONG lReturn = ::RegQueryValueEx(m_hSubKey, pszValue, NULL,
      NULL, NULL, NULL);

    if(lReturn == ERROR_SUCCESS)
      return TRUE;

    return FALSE;
    }

    /*================================================================
    * 函数名:    VerifyValue
    * 参数:      (LPCTSTR pszValue)
    * 功能描述:   判断指定的键名是否等于某个值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::IsEqual(LPCTSTR pszValue,int nn)
    {
    int nTemp;
    this->Read(pszValue,nTemp);
    if(nTemp==nn)
      return TRUE;
    return FALSE;
    }
    BOOL CReg::IsEqual(LPCTSTR pszValue,DWORD dw)
    {
    DWORD dwTemp;
    this->Read(pszValue,dwTemp);
    if(dwTemp==dw)
      return TRUE;
    return FALSE;
    }
    BOOL CReg::IsEqual(LPCTSTR pszValue,LPCTSTR lpsz)
    {
    CString str;
    this->Read(pszValue,str);
    if(str.CompareNoCase(lpsz)==0)
      return TRUE;
    return FALSE;
    }


    /*================================================================
    * 函数名:    CreateKey
    * 参数:      (HKEY hRootKey, LPCTSTR pszPath)
    * 功能描述:   创建路径
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::CreateKey (LPCTSTR pszPath)
    {
    DWORD dw;

    LONG ReturnValue = ::RegCreateKeyEx (m_hRootKey, pszPath, 0L, NULL,
           REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL,
           &m_hSubKey, &dw);

    if(ReturnValue == ERROR_SUCCESS)
      return TRUE;

    return FALSE;
    }

    /*================================================================
    * 函数名:    Write
    * 参数:      (LPCTSTR lpszKeyName, int iVal)
    * 功能描述:   写入整型值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::Write (LPCTSTR lpszKeyName, int iVal)
    {
    DWORD dwValue;

    dwValue = (DWORD)iVal;
    LONG ReturnValue = ::RegSetValueEx (m_hSubKey, lpszKeyName, 0L, REG_DWORD,
      (CONST BYTE*) &dwValue, sizeof(DWORD));


    if(ReturnValue == ERROR_SUCCESS)
      return TRUE;

    return FALSE;
    }

    /*================================================================
    * 函数名:    Write
    * 参数:      (LPCTSTR lpszKeyName, DWORD dwVal)
    * 功能描述:   写入DWORD值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::Write (LPCTSTR lpszKeyName, DWORD dwVal)
    {
    return ::RegSetValueEx (m_hSubKey, lpszKeyName, 0L, REG_DWORD,
      (CONST BYTE*) &dwVal, sizeof(DWORD));
    }


    /*================================================================
    * 函数名:    Write
    * 参数:      (LPCTSTR lpszKeyName, LPCTSTR pszData)
    * 功能描述:   写入字符串值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::Write (LPCTSTR lpszKeyName, LPCTSTR pszData)
    {

    LONG ReturnValue = ::RegSetValueEx (m_hSubKey, lpszKeyName, 0L, REG_SZ,
      (CONST BYTE*) pszData, strlen(pszData) + 1);


    if(ReturnValue == ERROR_SUCCESS)
      return TRUE;

    return FALSE;
    }


    /*================================================================
    * 函数名:    Read
    * 参数:      (LPCTSTR lpszKeyName, int& iVal) 第2个参数通过引用传递,可以在函数中修改实参
    * 功能描述:   读取整数
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::Read(LPCTSTR lpszKeyName, int& iVal)
    {

    DWORD dwType;
    DWORD dwSize = sizeof (DWORD);
    DWORD dwDest;

    LONG lReturn = ::RegQueryValueEx (m_hSubKey, (LPSTR) lpszKeyName, NULL,
      &dwType, (BYTE *) &dwDest, &dwSize);

    if(lReturn == ERROR_SUCCESS)
    {
      iVal = (int)dwDest;
      return TRUE;
    }

    return FALSE;
    }


    /*================================================================
    * 函数名:    Read
    * 参数:      (LPCTSTR lpszKeyName, DWORD& dwVal) 第2个参数通过引用传递,可以在函数中修改实参
    * 功能描述:   读取DWORD值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::Read (LPCTSTR lpszKeyName, DWORD& dwVal)
    {

    DWORD dwType;
    DWORD dwSize = sizeof (DWORD);
    DWORD dwDest;

    LONG lReturn = ::RegQueryValueEx (m_hSubKey, (LPSTR) lpszKeyName, NULL,
      &dwType, (BYTE *) &dwDest, &dwSize);


    if(lReturn == ERROR_SUCCESS)
    {
      dwVal = dwDest;
      return TRUE;
    }

    return FALSE;
    }


    /*================================================================
    * 函数名:    Read
    * 参数:      (LPCTSTR lpszKeyName, CString& sVal) 第2个参数通过引用传递,可以在函数中修改实参
    * 功能描述:   读取字符串值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::Read (LPCTSTR lpszKeyName, CString& sVal)
    {

    DWORD dwType;
    DWORD dwSize = 200;
    char  szString[255];

    LONG lReturn = ::RegQueryValueEx (m_hSubKey, (LPSTR) lpszKeyName, NULL,
      &dwType, (BYTE *) szString, &dwSize);


    if(lReturn == ERROR_SUCCESS)
    {
      sVal = szString;
      return TRUE;
    }

    return FALSE;
    }

    /*================================================================
    * 函数名:    DeleteValue
    * 参数:      (LPCTSTR pszValue)
    * 功能描述:   删除值
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::DeleteValue (LPCTSTR pszValue)
    {
    if(::RegDeleteValue(m_hSubKey, pszValue)== ERROR_SUCCESS)  
      return TRUE;
    else
      return FALSE;
    }

    /*================================================================
    * 函数名:    DeleteKey
    * 参数:      (HKEY hRootKey, LPCTSTR pszPath)
    * 功能描述:   删除路径
    * 返回值:    BOOL
    ================================================================*/
    BOOL CReg::DeleteKey (LPCTSTR pszPath)
    {

    if(::RegDeleteKey(m_hRootKey, pszPath) == ERROR_SUCCESS)
      return TRUE;
    else
      return FALSE;
    }


    /*================================================================
    * 函数名:    Close
    * 参数:      
    * 功能描述:   关闭注册表
    * 返回值:    void
    ================================================================*/
    void CReg::Close()
    {
    if (m_hSubKey)
    {
      ::RegCloseKey (m_hSubKey);
      m_hSubKey = NULL;
    }
    }


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/18 9:25:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/26 15:11:52

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    7,554.688ms