MFC注册表CRegKey

注册表是由windows维护的一个小数据库.里面也会保存windows本身的很多配置信息.

有时程序中要存些设置信息,一个方法就是创建一些普通的txt或xml文件,然后保存进去就行了.另一办法就是保存到注册表里

最顶端的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 只有当前用户能看到,如果login off换个用户就看不到了

HKEY_LOCAL_MACHINE \ SOFTWARE 所有用户都能看到

平时用的大部分软件都是把配置信息放HKEY_CURRENT_USER\ SOFTWARE下

注册表键值内容

Name , Type , Data 

Type只是起描述作用,真正用到的是Name , Data,相当于MFC中的CMap类,name就是键名,data是键值.

Type可以看成编程语言中的数据类型,Name就是变量名,Data是变量的值

常用的类型:

REG_SZ----字符串,类似Char* 或者CString

REG_DWORD----数值,类似DWORD (unsigned long)

MFC中操作注册表主要是CRegKey这个类.

创建函数:

//有点类似于创建一个目录供往里面写文件一样.

CRegKey key;

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

key.Close();

打开并添加值

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();

查看注册表信息

DWORD dwNum;

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

key.QueryDWORDValue(_T("count"),dwNum); //或者key.QueryValue(dwNum,_T("count"));

删除信息

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

MFC操作注册表便捷方式--使用CWinApp成员函数

1.新建项

CWinApp类InitInstance函数中,有以下代码

SetRegistryKey(_T("Local AppWizard-Generated Applications"));//在HKEY_CURRENT_USER \ SOFTWARE 下面新建一个项.

可以把名字改成其他任意值.比如注释掉上面那行代码,改成这样SetRegistryKey(_T("ArwenProduct"));

2,添加信息

AfxGetApp()->WriteProfileString(_T("Settings"),_T("Password"),_T("123")); //写入字符串值,

相当于在前面的ArwenProduct下面再生成新的项Settings.然后第二个参数是值名,第三个是键值

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

AfxGetApp()->WriteProfileInt(_T("settings"),_T("count"),123); //写入数字

3.读取信息

CString strPwd = AfxGetApp()->GetProfileString(_T("settings"),_T("pwd"));

int num = AfxGetApp()->GetProfileInt(_T("settings"),_T("count"));

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值