Win32注册表操作
注册表的概念
注册表是一个存储计算机配置信息的数据库,用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。
注册表结构
运行Regedit.exe,打开注册表编辑器,可以看到注册表的结构如下:

注册表是一个分层数据库,其中包含对于Windows以及Windows上运行的应用程序和服务的运行至关重要的数据。注册表是树型结构。树中的每个节点都称为键。每个键都可以包含子键和值。
注册表是按照“根键” -> "子键" -> "键值"层次结构来组织的。
注册表包含五大根键
"HKEY_CLASSES_ROOT" : 包含各种文件类型关联数据的信息
"HKEY_CURRENT_USER": 包含当前登录计算机的用户账户的用户配置文件信息,例如桌面个性化、输入法设置、网络连接以及打印机首选项等
"HKEY_LOCAL_MACHINE":包含一些当前计算机的系统配置信息,例如系统内存、设备程序等
"HKEY_USERS" :包含默认用户的配置文件信息以及动态加载的用户配置文件信息
"HKEY_CURRENT_CONFIG":包含在计算机启动时系统所使用的硬件配置文件信息,用于配置一些计算机相关设置。例如加载设备的驱动程序、计算机使用的分辨率等
打开和关闭注册表
RegOpenKeyEx
打开注册表
LSTATUS RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult );
hKey: 指向一个父键句柄
lpSubKey:指向一个字符串,用来表示要打开的子键名称
ulOptions:系统保留,必须指定为0
samDesired:打印注册表的存取权限,通过使用KEY_ALL_ACCESS表示全部权限
phkResult:接收打开的子键句柄
如果函数执行成功,则返回ERROR_SUCCESS,并且在phkResult中保存返回打开子键的句柄
RegCloseKey
关闭已打开的注册表句柄
1 LSTATUS RegCloseKey( 2 HKEY hKey 3 );
hKey:要关闭的键句柄,即RegOpenKeyEx的phkResult值
创建和删除子键
RegCreateKeyEx
创建一个子键
LSTATUS RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,const LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition );
hKey: 用来指向父键句柄
lpSubKey: 指向一个字符串,用来表示要创建的子键名称
ReServed:系统保留,必须指定为0值
lpClass:子键类名,一般设置为NULL值
dwOptions:创建子键时的选项,通常情况下使用REG_OPTION_NON_VOLATILE宏,表示创建的子键被创建到注册表文件中,而不是内存中
samDesired:打开注册表的存取权限,通常使用KEY_ALL_ACCESS。
lpSecurityAttributes:该参数指向一个SECURITY_ATTRIBUTE结构体,用来指定键句柄的安全属性,一般使用NULL
phkResult:指向用来接收打开的句柄
lpdwDisposition:指向DWORD的指针,该变量接收以下值:
| REG_CREATED_NEW_KEY 0x00000001L | 键不存在且已创建。 |
| REG_OPENED_EXISTING_KEY 0x00000002L | 键存在并且仅需打开即可更改。 |
如果lpdwDisposition为NULL,则不返回任何处置信息。
如果函数执行成功,则返回ERROR_SUCCESS,并且在phkResult中保存返回创建子键的句柄。当需要创建的子键已经存在,该函数和RegOpenKeyEx起到同样的作用。
RegDeleteKey
删除子键
1 LSTATUS RegDeleteKeyA( 2 HKEY hKey, 3 LPCSTR lpSubKey 4 );
hKey:用来指向父键句柄
lpSubKey:指向要删除的子键名称字符串
键值的查询、写入与删除
RegQueryValueEx
读取键名称中的数据或查询键名称的属性
1 LSTATUS RegQueryValueExA( 2 HKEY hKey, 3 LPCSTR lpValueName, 4 LPDWORD lpReserved, 5 LPDWORD lpType, 6 LPBYTE lpData, 7 LPDWORD lpcbData 8 );
hKey:用来指向要读取的键值项所处的子键句柄
lpValueName:用来指向要读取的键值项名称的字符串
lpReserved:保留参数,设置为NULL
lpType:接收返回的键值类型,如果不需要返回键值项类型,可以设置为NULL
lpDate:指向一个缓冲区,用来接收返回的键值数据
lpchData:在调用该函数时,这个参数用来指定缓冲区的长度;当函数返回时,该变量保存缓冲区实际接收到的长度
RegSetValueEx
写入键值项
1 LSTATUS RegSetValueExA( 2 HKEY hKey, 3 LPCSTR lpValueName, 4 DWORD Reserved, 5 DWORD dwType, 6 const BYTE *lpData, 7 DWORD cbData 8 );
hKey:用来指定要写入的键值项所处的子键句柄
lpValueName:指向定义键值项名称的字符串
Reservered:保存参数,设置为NULL
dwType:指定要写入的键值数据类型
lpData:指定要写入键值数据的缓冲区
cbData:要写入键值数据的缓冲区长度
RegDeleteValue
删除键值项
1 LSTATUS RegDeleteValueA( 2 HKEY hKey, 3 LPCSTR lpValueName 4 );
hKey:用来指定要删除的键值项所处的子键句柄
lpValueName:被删除键值项的名称
子键和键值的枚举
RegEnumKeyEx
子键枚举函数
1 LSTATUS RegEnumKeyExA(2 HKEY hKey,3 DWORD dwIndex,4 LPSTR lpName,5 LPDWORD lpcchName,6 LPDWORD lpReserved,7 LPSTR lpClass,8 LPDWORD lpcchClass,9 PFILETIME lpftLastWriteTime 10 );
hKey:指向被枚举的键句柄
dwIndex:指定需要返回信息的子键索引编号
lpName:用户接收返回子键名称的缓冲区
lpcchName:在调用函数前,该参数保存lpName指向缓冲区的长度;在调用该函数后,该参数保存缓冲区实际接收到的数据的长度
lpReserved:保留参数,必须为NULL值
lpClass:指向接收枚举子项的用户定义类。一般指定为NULL
lpcchClass:指向lpClass参数指定的缓冲区的大小,一般指定为NULL
lpftLastWriteTime:指向一个FILETIME结构体,用于接收最后一次被写入的时间
RegEnumValue
枚举键值
1 LSTATUS RegEnumValueA(2 HKEY hKey,3 DWORD dwIndex,4 LPSTR lpValueName,5 LPDWORD lpcchValueName,6 LPDWORD lpReserved,7 LPDWORD lpType,8 LPBYTE lpData,9 LPDWORD lpcbData 10 );
hKey:指向被枚举的键句柄
dwIndex:指定需要返回信息的键值索引编号
lpValueName:接收返回值名称的缓冲区
lpcchValueName:有调用该参数前,该参数保存lpValueName指向缓冲区的长度;在该函数调用完成后,该参数保存缓冲区实际接收到的数据的长度
lpReserved:保留参数,必须为NULL
lpType:指向返回键值数据类型
lpData:接收返回键值数据的缓冲区
lpcbData:在调用该函数前,该参数保存lpData指向缓冲区的长度;在该函数调用完成后,该参数保存缓冲区实际收到的数据的长度
常用的注册表设置(设置前建议备份整个注册表)
禁用快捷菜单的”发送到“菜单项
打开计算机\HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo 删除默认值。如果要恢复,将默认值设置为 {7BA4C740-9E81-11CF-99D3-00AA004AE837}
删除快捷方式箭头
打开计算机\HKEY_CLASSES_ROOT\lnkfile,删除IsShortcut键值
隐藏桌面图标
打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建名称为NoSetFolders键值,并设置数据为1
禁止访问任务管理器
打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System,修改DisableTaskmgr键值的数据为1。如果没有DisableTaskmgr键值,就创建一个。
在桌面显示Windows版本
打开计算机\HKEY_CURRENT_USER\Control Panel\Desktop,修改PaintDesktopVersion键值的数据为1
隐藏”重新启用“、”睡眠”和“休眠”命令
打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建一个NoClose键值,并设置数据为1
禁用计算机中的USB端口
打开计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR,修改Start键值数据为4
配置开机启动项
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
推荐阅读:
注册表
Registry - Win32 apps | Microsoft Learn
相关文章:
Win32注册表操作
注册表的概念 注册表是一个存储计算机配置信息的数据库,用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。 注册表结构 运行Regedi…...
白骑士的PyCharm教学高级篇 3.3 Web开发支持
系列目录 上一篇:白骑士的PyCharm教学高级篇 3.2 多模块项目管理 在现代Web开发中,前端技术的重要性日益增加。PyCharm不仅在后端开发中表现出色,在前端开发方面也提供了丰富的支持。本文将详细介绍PyCharm中对HTML、CSS、JavaScript的编辑支…...
SpringAOP-底层实现源码解析
目录 1. Spring AOP原理流程图 2. 动态代理 3. ProxyFactory 4. Advice的分类 5. Advisor的理解 6. 创建代理对象的方式 ProxyFactoryBean BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator 7. 对Spring AOP的理解 8. AOP中的概念 9. Advice在Spring AOP中…...
【C语言初阶】C语言操作符全攻略:提升编程效率的关键步骤
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言数组 🌹🌹期待您的关注 🌹🌹 ❀操作符 📒1. 算术操作…...
2007-2023年上市公司金融化程度测算数据(含原始数据+计算代码+计算结果)
2007-2023年上市公司金融化程度测算数据(含原始数据计算代码计算结果) 1、时间:2007-2023年 2、指标:行业代码、行业名称、stkcd、year、证券简称、是否发生ST或ST或PT、是否发生暂停上市、股票简称、成立日期、交易性金融资产、…...
【时时三省】(C语言基础)操作符
山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 算术操作符 这个时候打印出来的是整数 不会打印小数点后面的数字 因为它是int类型 只用把他换成浮点型并且它的两个数里面有一个必须是小数 才可以算出来小数 示例: %操作符的两个操作数必…...
常用API(三)
对于常见API的学习,主要学习了关于时间和日期的传统和新增APi 目录 1.Math 2.System 3.Runtime 4.日期和时间 (1)JDK8前传统时间API [1] Date [2] SimpledateFormat [3]Calendar (2)JDK8后新增时间API [1]代替…...
内存管理问题总结
内存管理 虚拟内存 我们程序所使⽤的内存地址叫做虚拟内存地址(Virtual Memory Address) 实际存在硬件⾥⾯的空间地址叫物理内存地址(Physical Memory Address) 操作系统引⼊了虚拟内存,进程持有的虚拟地址会通过 …...
十七、Intellij IDEA2022.1.1下载、安装、激活
目录 🌻🌻 一、下载二、 安装三、激活 一、下载 官网下载地址 本地直接下载 目前Intellij IDEA的最新版本已经更新到了 2024.1.4,由于最新版本可能存在不稳定的问题,此处选择其他版本进行下载,此处以2022.1.1为例进行下…...
【Material-UI】Button Group 中的 Disabled Elevation 功能
文章目录 一、Button Group 组件概述二、什么是 Elevation?三、为什么需要禁用 Elevation?四、使用 disableElevation 属性五、属性解析1. disableElevation 属性2. variant 属性3. aria-label 属性 六、应用场景1. 表单操作2. 工具栏3. 导航按钮 七、样…...
Java RESTful API 测试:使用 RestAssured
Java RESTful API 测试:使用 RestAssured 简介 在现代软件开发中,RESTful API扮演着至关重要的角色。API的测试同样重要以确保它们按预期工作。Java中的RestAssured库提供了一种简单直观的方式来测试RESTful Web服务。本文将介绍RestAssured的基本概念…...
将nestjs项目迁移到阿里云函数
注意:长耗时,高内存 的应用,定时任务 不适合迁移。 根据模板创建项目 一、模板配置修改 1.node版本修改 由于我的nestjs项目是node18的需要修改 pre-deploy项目: 改成 resources:framework:component: fc3actions:pre-deploy:-…...
边缘计算×AI:绘制未来实时智能的宏伟蓝图
引言:时代的召唤 随着物联网技术的飞速发展,数以亿计的传感器和智能设备正不断涌入我们的生活和工作空间,它们生成的数据量级之大,远非传统的集中式云处理所能高效应对。因此,一种新兴的数据处理模式——边缘计算&…...
实现关系运算符的重载
全局函数的实现法: 成员函数实现法:...
【css】使用CSS绘制奥运五环--巴黎奥运
使用CSS绘制奥运五环 在2024年巴黎奥运会期间,本文来使用 CSS 来画一个奥运五环。奥运五环由五个相互交叠的圆环组成,分别代表五大洲。 奥运五环是相互连接的,因此在视觉上会产生重叠效果,这也是实现五环最有挑战性的部分 HTML结…...
【Python数据处理】MatplotlibNumpyPandas常用API整理
目录 Matplotlib 1. 导入 Matplotlib 并创建图布 2. 实现基础绘图 2.1 折线图 2.2 柱状图 2.3 散点图 2.4 直方图 3. 完善绘图辅助功能 3.1 添加标题和标签 3.2 添加网格线 3.3 添加图例 4. 在一个坐标系下绘制多个图像 5. 在一个图形窗口创建多个子图 5.1 使用 a…...
Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心
Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心,旨在帮助开发人员更轻松地构建和管理微服务架构。以下是关于Nacos的详细介绍: 一、概述 Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的缩写&a…...
条形码与二维码报表
概述 条形码与二维码:演示条形码与二维码,条形码数据将来自于关联的字段值。支持各种常用的条形码与二维码。 应用场景 如下图所示,简单展示数据 示例说明 数据准备 在数据面板中添加数据集,可选择Json数据集和API服务数据…...
数据采集工具之Flume
本文主要实现数据到datahub的采集过程 1、下载 Index of /dist/flume/1.11.0 datahub插件下载 https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/aliyun-flume-datahub-sink-2.0.9.tar.gz 2、安装 $ tar aliyun-flume-datahub-sink-x.x.x.tar.gz $ cd aliyun-…...
【24年最新】AI大模型零基础入门到精通学习资料大全,学完你就是LLM大师!
零基础如何学习大模型 AI 领取方式在文末 为什么要学习大模型? 学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程&am…...
3分钟掌握DeepLabV3+语义分割:从零开始训练你的第一个图像分割模型 [特殊字符]
3分钟掌握DeepLabV3语义分割:从零开始训练你的第一个图像分割模型 🚀 【免费下载链接】deeplabv3-plus-pytorch 这是一个deeplabv3-plus-pytorch的源码,可以用于训练自己的模型。 项目地址: https://gitcode.com/gh_mirrors/de/deeplabv3-p…...
百考通:AI精准精准赋能论文降重与去AI痕迹,让学术成果更高效、更专业
在学术写作与论文发表的过程中,重复率过高、AI生成痕迹明显,是困扰无数学生与科研工作者的核心难题。不仅可能导致查重不通过,更会影响学术诚信与成果认可度。百考通(https://www.baikaotongai.com) 凭借智能文本优化技…...
从零构建数字货币量化交易系统:Python实战指南
1. 为什么选择Python构建量化交易系统? 在数字货币市场这个724小时运转的竞技场中,量化交易就像一位不知疲倦的钢铁战士。我2018年第一次尝试用Python写交易策略时,发现它简直是量化的"瑞士军刀"。想象一下,你正在用Exc…...
分切机程序开发:上下收放卷张力控制实现
分切机程序 ,上下收放卷张力控制,无电子凸轮功能。 触摸屏威纶通,PLC是三菱FX3U系列 在自动化生产领域,分切机的稳定运行至关重要,尤其是上下收放卷张力的精准控制。本文将探讨基于威纶通触摸屏和三菱FX3U系列PLC&…...
矽力杰 Silergy SY8810 降压稳压器 佰祥电子
突破算力供电瓶颈:SY8810单芯片15A大电流与IC数字调压全景拆解导语:在边缘计算SoC、高速光模块(如QSFP-DD)以及企业级SSD的主板设计中,核心处理器的供电轨正面临着极其苛刻的物理学挑战。随着先进制程工艺不断演进&…...
仅限TOP20量化机构内部流通的C++内存池测试矩阵(含FPGA协处理器适配层验证项),现在限时解密!
第一章:金融级C内存池测试的范式演进与行业背景在高频交易、实时风控与低延迟结算等金融核心系统中,内存分配性能直接决定毫秒级响应能力的上限。传统 malloc/free 在高并发小对象场景下易引发锁争用、碎片化加剧与缓存行失效,迫使头部券商与…...
你的Xbox手柄电量还能撑多久?解决游戏中断的电量管家
你的Xbox手柄电量还能撑多久?解决游戏中断的电量管家 【免费下载链接】XB1ControllerBatteryIndicator A tray application that shows a battery indicator for an Xbox-ish controller and gives a notification when the battery level drops to (almost) empty.…...
Spring Cloud微服务架构下的医院信息系统深度解析与实践指南
Spring Cloud微服务架构下的医院信息系统深度解析与实践指南 【免费下载链接】HIS HIS英文全称 hospital information system(医疗信息就诊系统),系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗…...
MATLAB App Designer打包实战:从GUI到独立安装包的完整部署指南
1. MATLAB App Designer打包前的准备工作 第一次把MATLAB开发的GUI程序打包成独立安装包时,我踩了不少坑。记得当时给合作方演示算法,对方电脑没有MATLAB环境,只能干着急。后来花了三天时间才搞明白整个打包流程,现在把这些经验系…...
告别万用表!用ESP32和PlatformIO搭建一个简易电压监测器(实时串口绘图)
用ESP32打造实时电压监测系统:从硬件搭建到数据可视化 在物联网和智能硬件开发中,电压监测是一个基础但至关重要的功能。无论是电池电量监控、太阳能系统管理,还是简单的电子实验,实时了解电压变化都能帮助我们更好地理解系统状态…...
