注册表是由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"));

MFC注册表CRegKey相关推荐

  1. VC++ MFC中如何将应用程序的配置信息保存到注册表中(一)

    注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息.比如我们打开一个记事本,调整其窗口大小,使用 ...

  2. vs2008环境下MFC对注册表的读写操作

    最近修改一个在vs2008环境下的MFC project,其中用到对注册表的读写操作,虽然在网上down了不少代码也查阅了不少文章,但运行始终存在不少问题,现把我运行成功的代码分享出来,希望对有需要的 ...

  3. CRegKey 注册表操作

    1.简介 CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的打开注册表的某个分支或子键(CRegKey::Open),可以方便的修改一个键的键值(CRegKey::SetVa ...

  4. 孙鑫-MFC笔记七--文件与注册表

    c 语言对文件的操作是通过 FILE 结构体来完成的 1 定义一个文件结构体的指针,获取文件结构体指针并付给       如何打开一个文件    FILE *fopen(const char*file ...

  5. 使用MFC修改注册表DWORD类型的值

    最近需要禁用一个UAC的权限的功能,在注册表里修改一个DWORD类型的值,找了好多方法都只有一部分管用,自己摸索着把功能实现了,还是很感谢网上的大神写的帖子的 在 .h 文件中定义好方法 在 .cpp ...

  6. MFC SDI 中 通过注册表保存当前窗体的 显示状态位置

    在 框架类响应 WM_CLOSE消息的时候添加如下代码 HKEY  key;        //用于接收注册表项句柄  WINDOWPLACEMENT  info;  //获得窗体位置状态信息  Ge ...

  7. 我的YUV播放器MFC小笔记:注册表读写

    在使用YUV Player Deluxe时,发现其可保存上一次的参数,研究之后,才知道它是使用注册表来实现的.下面是YUV播放器与注册表有关的函数接口,注册表与了我的大名外,其它值是参照YUV Pla ...

  8. VC++ MFC 遍历注册表,获取网卡名称。(设备管理器中的名称)

    HKEY hKey_tmp = NULL, hKey = NULL;TCHAR comNum[64],achKey[64];CString comname,sActive,temp;DWORD cbM ...

  9. C++ (MFC) 编写注册表,使开机自启动

    注册表的编写 设置一个按钮来调用注册表的函数: void CMFCtest1Dlg::OnBnClickedButton5() {// TODO: 在此添加控件通知处理程序代码Autostart(); ...

最新文章

  1. 【欧拉回路】解题报告:luogu P6066 [USACO]Watchcow (欧拉回路详解)【模板】
  2. keras图像增强augmentation
  3. 如何应对“吴恩达:人工智能落地最重要的挑战之一是小数据”的困境?
  4. scrapy发送翻页请求
  5. 结构体和类的区别-Objective-C基础
  6. 【ArcGIS风暴】捕捉VS经典捕捉,谁更有用武之地?
  7. bufferreader readline一次读一行_python中read(),readline(),readlines()的区别
  8. Facebook AI牛津提出带“轨迹注意力”的Video Transformer,在视频动作识别任务中性能SOTA!...
  9. [转载]Linux shell中的竖线(|)——管道符号
  10. i12单双耳切换_“摸一摸”,乐在其中 | 雷柏i100蓝牙TWS耳机,主从切换,可单耳使用,也可双耳使用...
  11. 教你不要光驱一样重装系统
  12. 花花公子发大招!一款可以“美容”的安全套,极致××体验从它出发 | 钛空舱
  13. 【Matlab车牌识别】BP神经网络车牌识别【含GUI源码 669期】
  14. python的彪悍特性--自省
  15. 常见图片分类及适用场景
  16. 闲鱼如何高效打造一个多业务、低侵入的搜索链路
  17. oracle HTTP Server安装和配置为集群代理(linux)
  18. 使用PowerPhotos for Mac查找重复项似乎缺少一些重复的照片的解决办法
  19. shell脚本俄罗斯方块
  20. Unity GL画线的坑

热门文章

  1. 解决虚拟机无法连接USB设备(U盘、网卡等等),网上各种方法均试过但无效
  2. android su文件,Android su开放root权限
  3. 72、公安网络视频监控系统解决方案
  4. web实现地图画标识物
  5. ubuntu16.04 安装opencv的viz模块
  6. 免费离线PDF工具箱,PDF工具大全,PDF合并PDF加密PDF解密PDF格式转换PDF分割PDF旋转以及从PDF中提取图片,满足对PDF操作的一切需求~完全免费无使用次数限制,文末附下载链接~
  7. 黑客消失在互联网时代
  8. Wireshark 301: Finding the busiest computers on your network
  9. GO语言环境搭建 + Sublime text 3 + Git + MarGo + gocode 组合配置详解
  10. AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史