注册表及其CRegKey类

一,注册表简介

       有时程序中要存些设置信息,一个方法就是创建一些普通的txt或xml文件,然后保存进去就行了.另一办法就是保存到注册表里.注册表是由windows维护的一个小数据库.里面也会保存windows本身的很多配置信息.我们在命令行通过regedit可以手动打开注册表查看相关信息.在页面上我们会看到左边有很多树形结构的内容,我们可以简单的把它等同于目录.


  最顶端的5个根键:


     1.)HKEY_CLASSES_ROOT
          定义了系统中所有文件类型标志和基本操作标志。

     2.)HKEY_CURRENT_USER
            当前用户的配置信息,包括环境变量、桌面设置、网络连接,软件运行信息等

    3.)HKEY_LOCAL_MACHINE
           本机相关的系统信息,包括硬件信息,驱动信息,内存数据,总线数据等等。

    4.) HKEY_USER
           这里记录了本机器上所有用户的设置

    5.)KKEY_CURRENT_CONFIG
         包括字体、BIOS、操作系统、打印机等四项的配置信息。该字段是HKEY_LOCAL_MACHINE\Config的副本。

           其中1,4,5,项根键我们一般只是读取一些信息.而2,3两项根键下就会写入一些应用程序自己的配置信息.所以用的最多的是这两个位置。


       HKEY_CURRENT_USER \ SOFTWARE
       HKEY_LOCAL_MACHINE \ SOFTWARE
       区别:

       放在HKEY_CURRENT_USER中的信息只有当前用户能看到,如果log off换个用户就不到了.而放HKEY_LOCAL_MACHINE下面的信息所有用户都能看到

二、注册表键值内容

       我们看到的那一层层树形结构,就像一个个目录一样,它本身就是起组织内容的作用.而我们真正需要的信息是在目录的最后一层.打开后我们会在右边看到三列。Name , Type , Data 其中的Type只是起描述作用,帮助你理解.所以真正用到的是Name , Data看到两个值想到MFC中的CMap类了吧,name就是键名,data是键值.我猜windows保存注册表里的信息时就用CMap这样的类型的.这里的Type我们也可以看成编程语言中的数据类型,Name就是变量名,Data是变量的值.

      1,注册表里常用的类型是REG_SZ,可以简单的看成是个字符串像Char* 或者CString这样的.

      2,另一个是REG_DWORD,这保存的是数值,就可以看成DWORD (unsigned long)。


三、MFC类库中的CRegKey



    1,创建函数,有点类似于创建一个目录供往里面写文件一样。

       CRegKey key;
       key.Create(HKEY_CURRENT_USER, _T("SOFTWARE\\ArwenSoft"));

       key.Close();


    2,打开并添加值


        int iMaxNumber = 100;
       BOOL bOpenReg = key.Open(HKEY_CURRENT_USER, _T("SOFTWARE\\ArwenSoft"));

       

      //实际上我们有时真需要把密码保存到注册表时可不能明码保存,先得把密码加密后再保存,读取时再解密.

      key.SetStringValue(_T("Password"), _T("123"));
      key.SetDWORDValue(_T("count"),iMaxNumber);
      key.Close();


    3,查看注册表信息


      DWORD dwNum;
      BOOL bOpenReg = key.Open(HKEY_CURRENT_USER, _T("SOFTWARE\\ArwenSoft"));
      key.QueryDWORDValue(_T("count"),dwNum); //或者key.QueryValue(dwNum,_T("count"));

     4,删除信息


      key.DeleteValue(_T("count"));

四、MFC操作注册表便捷方式
     除了使用CRegKey类直接操作注册表,MFC框架还提供了个便捷的方式.


     MFC的入口点,继承自CWinApp的那个类中有个InitInstance函数.我们新建一个project时,该函数默认生成这样一行代码


     SetRegistryKey(_T("Local AppWizard-Generated Applications"));

 

     这里就是在HKEY_CURRENT_USER \ SOFTWARE 下面新建一个项.你可以把名字改成其他任意值.比如:


     SetRegistryKey(_T("ArwenProduct"));


     在这里这样设置后,以后查看或往注册表添加信息就非常简单了.往注册表写信息就是:


      WriteProfileString(_T("Settings"),_T("Password"),_T("123")); //写入字符串值
      WriteProfileInt(_T("settings"),_T("count"),123); //写入数字


       其中第一个参数相当于在前面的ArwenProduct下面再生成新的项,.然后第二个参数是值名,第三个是键值.当然如果你还想多几层项,可以样


        WriteProfileString(_T("ConfigInfo\\Settings"),_T("Password"),_T("123")); //写入字符串值

读取注册表信息
        CString strPwd = GetProfileString(_T("settings"),_T("pwd"));
         int num = GetProfileInt(_T("settings"),_T("count"));


这些函数是CWinApp的成员函数.在其他地方用,得这样

           AfxGetApp()->GetProfileString

          这里用AfxGetApp()可以得CWinApp的指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C 注册表读写类是一种用于管理和操作Windows操作系统注册表的类。注册表是Windows操作系统的核心组件之一,用于存储系统配置和应用程序设置的信息。 C 注册表读写类提供了一组方法和属性,用于读取、写入、修改和删除注册表中的键值。通过使用该类,可以轻松地访问和管理注册表中的数据。该类提供了以下常用的方法: 1. OpenKey:打开一个指定路径的注册表键。 2. CreateKey:创建一个指定路径的注册表键。 3. GetValue:获取指定路径下的键值。 4. SetValue:设置指定路径下的键值。 5. DeleteKey:删除指定路径下的注册表键。 6. DeleteValue:删除指定路径下的键值。 使用C 注册表读写类,可以方便地对注册表进行读写操作,从而实现对应用程序设置和系统配置的管理。比如,可以使用该类来读取和修改系统的默认浏览器设置、时间和日期格式、桌面背景等。同时,也可以使用该类来读取和修改应用程序的配置信息,如保存上一次打开的文件路径、用户界面偏好设置等。 需要注意的是,对注册表的读写操作需要管理员权限,因为注册表是系统关键信息的存储位置。在使用该类时,需要确保程序运行在具有管理员权限的账户下,否则可能会导致访问被拒绝的错误。 总之,C 注册表读写类是一个很实用的工具类,可以帮助开发人员轻松地读取和写入注册表中的数据,实现对系统和应用程序设置的管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值