MFC操作注册表的两种方法(方法二超简单 )

MFC对注册表的操作 今天刚学了对注册表的读写操作。在这里总结一下。 主要用到的函数有: LONG WINAPI RegCreateKey( //Creates the specified registry key. If the key already exists in the registry, the function opens it. __in HKEY hKey, //创建一个指定 阅读详情

操作注册表的两种方法实现

方法一:一般操作注册表的方法

注册表内部结构: 
key->subkey->value->名称,类型,数据

函数: 
RegCreateKey() 
RegCreateKeyEx() 
RegOpenKey() 
RegOpenKeyEx() 
RegSetValue() 
RegSetValueEx() 
RegQueryValue() 
RegQueryValueEx() 
RegDeleteKey() 
RegDeleteKeyEx() 
RegCloseKey()

1.写注册表操作
有些系统需要管理员才能对注册表进行修改,所以想要程序运行成功必须要以管理员身份运行,否则将写入失败
 

    HKEY hKey = nullptr;
    //创建成功,将得到hKey,一个注册表句柄,用于下面操作注册表
    if (ERROR_SUCCESS != RegCreateKey(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"), &hKey))
    {
        AfxMessageBox(TEXT("创建注册表失败!"));
        return;
    }
    //写入注册表                                  //类型  //名称 //字符个数
    //只能写入一个value
    if (ERROR_SUCCESS != RegSetValue(hKey,nullptr,REG_SZ,TEXT("Test"),4))
    {
        AfxMessageBox(TEXT("写入注册表失败!"));
        return;
    }
    if (hKey ==nullptr)
    {
        return;
    }
    DWORD dwData = 100;
    LONG lRet = 0;
    //这个函数可以写入更多的Value                      //名称            //类型        //数据
    if (ERROR_SUCCESS != (lRet = RegSetValueEx(hKey, TEXT("other"), 0, REG_DWORD, (CONST BYTE*)&dwData, 4)))
    {
        AfxMessageBox(TEXT("写入注册表失败Ex!"));
        return;
    }
    AfxMessageBox(TEXT("写入注册表成功!"));
    RegCloseKey(hKey);

2.读注册表操作

    LONG lValue = 0;
    //先读取数据的长度
    RegQueryValue(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"), nullptr, &lValue);
    TCHAR *pBuf = new TCHAR[lValue];
    RegQueryValue(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"), pBuf, &lValue);
    AfxMessageBox(pBuf);

    HKEY hKey = nullptr;
    DWORD dwTpye = 0;
    DWORD dwValue = sizeof(DWORD);//这个大小一定要先求出来,否则会出错(234)
    LPDWORD dwData = new DWORD;//一定要分配内存,否则也会出错
    LONG lRet = 0;
    //打开注册表
    RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"),0, KEY_ALL_ACCESS,&hKey);
    //RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"), &hKey);
    //读注册表          //valuename      //返回value类型 //数据缓存区 //缓存区大小
    if (ERROR_SUCCESS != (lRet = RegQueryValueEx(hKey, TEXT("other"), 0, &dwTpye, (LPBYTE)dwData, &dwValue)))
    {
        AfxMessageBox(TEXT("读取注册表失败!"));
        return;
    }
    AfxMessageBox(TEXT("读取注册表成功!"));
    CString s;
    s.Format(TEXT("data = %d"), *dwData);
    AfxMessageBox(s);
    delete dwData;

RegQueryValueEx这个函数根据不同的REG类型有不同的用法,需要谨慎小心。

 

 

方法二:超简单操作注册表的方法(超简单,可用)

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

MFC的CWinApp 类提供了很容易的注册表访问函数---以前从来没注意过---看一下下面几个成员函数---
 

void SetRegistryKey( LPCTSTR lpszRegistryKey );Causes application settings to be stored in the registry instead of .INI files.
void SetRegistryKey( UINT nIDRegistryKey );Causes application settings to be stored in the registry instead of .INI files.

参数:
  lpszRegistryKey:字符串指针,包含了键的名字。

  nIDRegistryKey:注册表中键的ID/索引。

功能:

SetRegistryKey 这个函数功能是设置MFC程序的注册表访问键,并把读写 ini 文件的成员函数映射到读写注册表。只要调用一下 SetRegistryKey 并指定注册表键值,那么下面6个成员函数,就被映射到进行注册表读取了。

 

WriteProfileBinaryWrites binary data to an entry in the application's .INI file.
WriteProfileIntWrites an integer to an entry in the application's .INI file.
WriteProfileStringWrites a string to an entry in the application's .INI file.

 

GetProfileBinaryRetrieves binary data from an entry in the application's .INI file.
GetProfileIntRetrieves an integer from an entry in the application's .INI file.
GetProfileStringRetrieves a string from an entry in the application's .INI file.

MSDN上面写上面6个函数是写到INI文件的。所以俺就忽略了其访问注册表的功能。无意中看了其MFC实现才有所了解。

 

MFC的入口点,继承自CWinApp(.cpp文件里面)的那个类中有个InitInstance()函数即.cpp文件中的InitInstance()函数。我们新建一个project时,该函数默认生成这样一行代码SetRegistryKey(_T("Local AppWizard-Generated Applications"));

这里就是在HKEY_CURRENT_USER \ SOFTWARE 下面新建一个项.你可以把名字改成其他任意值.比如注释掉上面那行代码,改成这样SetRegistryKey(_T("KellyApp"));

 

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

往注册表写信息就是

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

WriteProfileInt(_T("Settings"),_T("Count"),123); //写入数字

 

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

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

 

读取注册表信息  (InitInstance()函数里面)

CString strPassword = GetProfileString(_T("Settings"),_T("Password"));

int num = GetProfileInt(_T("Settings"),_T("Count"));

 

 

不过这些函数是CWinApp的成员函数(.cpp文件里面)。在其他地方用,得这样

 

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


 CString strPassword = theApp.GetProfileString("Settings","Password");
或 
 CString strPassword = AfxGetApp()->GetProfileString("Settings","Password");

AfxGetApp()可以得到CWinApp的指针
 

 

 

 

MFC的注册表操作—CRegKey类的使用 本人在开发IE主页修改器时,想通过MFC中的函数操作注册表来实现功能,因此在开发前整理了本篇文章。1.简介CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的打开注册表的某个分支或子键(CRegKey::Open),可以方便的修改一个键的键值(CRegKey::SetValue),也可以查询某个键的键值(CRegKey::QueryValue),操作完成之后,可 阅读详情

相关推荐

MFC在Windows注册表操作中的应用实践

在操作系统中,注册表是一个庞大的数据库,用于存储系统和应用程序配置信息。它是Windows操作系统的核心组件之一,包含了有关计算机系统和用户设置的详细信息。注册表涉及的范围包括硬件、系统软件、用户偏好设置以及安装的软件配置信息等。MFC(Microsoft Foundation Classes)是微软公司提供的一个C++类库,它简化了Windows应用程序的开发过程。

weixin_29215509的博客 423

MFC 读写注册表

创建或打开注册表项: 使用 或 方法来创建或打开一个注册表项。写入值: 使用 , , 等方法来写入不同类型的值。关闭注册表项: 使用 方法关闭注册表项。打开注册表项: 使用 方法打开一个注册表项。读取值: 使用 , , 等方法来读取不同类型的值。关闭注册表项: 使用 方法关闭注册表项。以下是一个简单的示例,展示了如何在MFC中读写注册表: 在这个示例中:请记住,当你在读写注册表时,特别是在 和其他系统级别的键时,你可能需要管理员权限。同时,错误处理非常重要,以确保你的应用在遇到无法访问或不存在的

chenhao0568的专栏 1789

MFC 注册表操作(新增,删除,读取,修改)

MFC 注册表操作 demo(新增,删除,读取,修改) 代码简单不复杂,适合初学者

怎样在VC++中访问和修改注册表 (转)

怎样在VC++中访问和修改注册表 (转)[@more@]广东省惠州市皓天计算机技术 粟利民 windows95/98/Me的注册表包含了Windows95/98/Me的系统配置、PC机的硬件配置、win32应用程序和用户的其他设...

csd3176的博客 189

Shopee滑块验证码太刁钻?手把手教你用Python+Playwright绕过弧形验证(附影刀RPA接入代码)

本文详细介绍了如何使用Python和Playwright结合SadCaptcha第三方服务高效破解Shopee平台的弧形滑块验证码,并集成到影刀RPA工作流中。该方案开发周期短、准确率高(>90%),特别适合跨境电商自动化操作,已在实际项目中验证成功。

weixin_29284657的博客 567

创建动态代理对象bean,并动态注入到spring容器中

使用过Mybatis的同学,应该都知道,我们只需要编写mybatis对应的接口和mapper XML文件即可,并不需要手动编写mapper接口的实现。这里mybatis就用到了JDK动态代理,并且将生成的接口代理对象动态注入到Spring容器中。 这里涉及到几个问题。也许有同学会有疑问,我们直接编写好类,加入@Component等注解不是可以注入了吗?或者在配置类(@Configuration)...

lichuangcsdn的博客 3万+

MFC 注册表

【代码】MFC 注册表。

weixin_45672157的博客 833

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

GPUDirect是NVIDIA开发的一项技术,旨在实现GPU与其他设备(如网络接口卡NIC和存储设备)之间的直接通信和数据传输,而无需CPU的参与。传统上,数据在GPU和另一个设备之间传输时,必须通过CPU,这导致潜在的性能瓶颈和延迟增加。GPUDirect技术则通过绕过CPU,直接访问和传输数据,显著提高系统性能。NVLink是NVIDIA开发的一种高速、高带宽的互连技术,用于连接多个GPU之间或GPU与其他设备(如CPU、内存等)之间的通信。

异构算力老群群(在读985计算机博士生)的技术博客 7770

MFC注册表操作

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

~鹏鹏在努力~ 492

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5785

【数字IC基础】DFT(Design For Test)可测性设计

【数字IC基础】DFT(Design For Test)可测性设计

努力,加油每一天鸭~ 3465

MFC文件和注册表的操作

4、C语言和MFC的文件操作用途广泛;注册表 存储在二进制文件里面,win32API提供了大量的函数操作注册表。1、调试日志 debugview 文件日志:警告日志 错误日志。对于宽字节而言 wchar a[20] = “bingo”;3、文件传输 CFile 与 socket 结合使用。文件、管道、邮槽 通信资源、磁盘设备、控制台、目录。注册表:Win+R组合键 regedit。6、注册表的操作 病毒 逆向 操作注册表。5、配置文件 windows。

acm10139的博客 967

手把手保姆级|Python爬取微信公众号文章完整版,反反爬策略拉满,附可运行完整代码(永久可用)

做Python爬虫的朋友都知道,爬取微信公众号文章 绝对是爬虫领域的「香饽饽」也是「硬骨头」。一方面,微信公众号的文章是极具价值的数据源:不管是自媒体从业者做竞品分析、新媒体运营者整理干货、还是个人学习收集资料,都需要批量爬取公众号文章;另一方面,微信的反爬机制堪称全网最严苛之一 ——腾讯对微信生态的风控做到了极致,动态渲染页面、高频IP封禁、Cookie短时效失效、请求头严格校验、自动化工具秒识别、频繁请求直接拉黑,这些反爬手段让90%的爬虫新手望而却步:要么爬了几篇就被封IP,要么Cookie失效爬取中

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2624

九:[VC++]MFC操作注册表

[VC++]MFC操作注册表MFC操作注册表一:打开注册表键LONG RegOpenKeyEx(  HKEY hKey,         // handle to open key主键  LPCTSTR lpSubKey,  // subkey name子键  DWORD ulOptions,   // reserved。必须是0  REGSAM samDesired, // security access mask读写标识  PHKEY phkResult    // handle to open key

ljd_1986413的专栏 1792

YOLOv13添加DRB模块map暴涨12.33!准确率提升8.56!召回率提升15.66

本文介绍了在YOLOv13模型中添加DRB模块的改进方法。实验结果显示,添加DRB模块后模型性能显著提升,mAP暴涨12.33%,准确率提升8.56%。文章详细说明了移植过程,包括创建yolov13-DRB.yaml配置文件、修改tasks.py和__init__.py文件,以及引入UniRepLKNet模块的具体实现。其中重点描述了GRNwithNHWC、NCHWtoNHWC等核心组件的实现细节,并提供了完整的模型结构配置代码。这些改进使得YOLOv13模型在保持原有架构优势的同时,获得了更强大的特征提取

FJN110的博客 2819

基于非接触式微波雷达设计的跌倒检测预警系统【短信报警】

本项目选择基于非接触式微波雷达的跌倒检测预警装置作为技术核心,采用云帆瑞达的R60AFD1跌倒检测模组。这一模组能够根据人体的运动变化,如速度、距离和姿态等特征,判断是否发生跌倒,并可以持续监控老年人是否处于危险状态。此外,本项目还结合4G通信技术,通过Air724UG模块实现短信报警功能,一旦检测到跌倒事故,系统将自动通过4G网络向紧急联系人发送短信报警,及时通知亲属或医护人员进行救援。

1752

【MFC】 MFC文件操作和注册表操作

MFC文件和注册表的操作 日志、操作配置文件、ini文件、注册表、音视频的文件存储。 Linux下一切皆文件。 C/C++文件操作 常量指针和指针常量 const char* p == char const *p 常量指针,表示指向的内容为常量,指针的指向可以修改,指针指向的内容不能修改。 char* const p 指针常量,表示地址是常量,指向不能改变,指向的内容可以改变。 C语言文件操作 文件打开的模式 示例: //写文件 void CMFCFileView::OnFileWrite() {

半生瓜のblog 1444

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中简单操作注册表

本文只是对注册表实现简单的打开、创建、读、写、关闭操作,故只是基本知识的介绍,适合不能熟练使用注册表操作的初级读者。(我把本文放在这里,其实最主要的目的是怕自己以后忘了,毕竟我也不常用这方面的知识,好不容易弄懂了点点,就赶快存起来,呵呵^_^)一、说明:     注册表是Windows重要组成部分,注册表记录了大量有关电脑软硬件的信息。注册表中的值通过其名称标识。值名称由与键名相同的字符组成。值本

施昌权专栏 1693

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MFC注册表操作详解

 MFC注册表操作详解出处:Zarotys Blog前置知识:VC WIN-API MFC我总结了一些MFC操作注册表,大致分3种方法:           1)WIN-API这个是当然的了,MFC也是基于WIN-API的,所以我们直接在MFC里面应用WIN-API的注册表操作函数来对操作注册表,是没有一点问题的。WIN-API的注册表操作大家

jiangdf的专栏 4945

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MFC注册表CRegKey

注册表是由windows维护的一个小数据库.里面也会保存windows本身的很多配置信息. 有时程序中要存些设置信息,一个方法就是创建一些普通的txt或xml文件,然后保存进去就行了.另一办法就是保存到注册表里 最顶端的5个根键: 1.)HKEY_CLASSES_ROOT 定义了系统中所有文件类型标志和基本操作标志. 2.)HKEY_CURRENT_USER 当前用户的配置信息,包括环境变量、桌面设置、网络连接,软件运行信息等 3.)HKEY_LOCAL_MACHINE 本机相关的系统信息,

qq_37240392的博客 1078
上一篇: OpenCv打开图像窗口显示在MFC控件上 和 Qt控件上
下一篇: MFC ImageList控件的使用方法
c1learning
博客等级 码龄14年 43粉丝 32原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值