c++枚举和搜索注册表

C++ USB转串口编程 - 查找COM口 环境:Visual Studio 2017 + Windows 10 1. 新建项目,选择C++和DLL生成空项目SerialPort 2. 新建头文件“SerialPort.h” 阅读详情

原文链接:http://blog.youkuaiyun.com/earbao/article/details/8486593


#include <stdio.h>
#include <windows.h>

#define SUBKEYS 1



//枚举注册表
void EnumRegKey(){
	
	HKEY hKey=NULL,h=NULL;
	char str[MAX_PATH];
	DWORD num=sizeof(str),index=0,rc;

#if SUBKEYS
	rc=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE",0,KEY_ALL_ACCESS,&hKey);
#else
	rc=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion",0,KEY_ALL_ACCESS,&hKey);
#endif
	if(rc==ERROR_SUCCESS)
	{

#if SUBKEYS
		while(RegEnumKeyEx(hKey,index,str,&num,NULL,NULL,NULL,NULL)==0)
#else
			while(RegEnumValue(hKey,index,str,&num,NULL,NULL,NULL,NULL)==0)
#endif
			{
				printf("%s \n",str);
				index++;
				num=MAX_PATH;
			}
			printf("\n\nNumber of index =%d\n\n",index);

	}else{

		printf("Can't open the key !\n");

	}
	RegCloseKey(h);
	RegCloseKey(hKey);
}

#define  MAINKEY HKEY_LOCAL_MACHINE
int ResultCount=0;

bool StealReg(char KeyValue[MAX_PATH],char Virus[MAX_PATH])
{

	if(strcmp(KeyValue,Virus)==0)
	{

		return true;
	}else{

		return false;
	}
}
//搜索注册表
// 该函数唯一的参数是SubKey,比如"software\\Microsoft"
void EnumReg(char SubKey[MAX_PATH])
{

	char temp[MAX_PATH];
	HKEY hKey = NULL;
	char str[MAX_PATH];	
	DWORD num = sizeof(str),index = 0,rc;
	
	rc = ::RegOpenKeyEx(MAINKEY,SubKey,0,KEY_ALL_ACCESS,&hKey);
	if(rc == ERROR_SUCCESS)
	{
		while( RegEnumValue(hKey,index,str,&num,NULL,NULL,NULL,NULL)==0 )
		{	//首先遍历值,进行处理
			printf("\t%s\n",str);
			if(StealReg(str,"E:\\Program Files\\Borland\\CBuilder6"))
			{	//上面第二个参数就是你要查找的值
				ResultCount++;
			}
			index++;
			num = MAX_PATH;
		}
		index = 0;
		while( RegEnumKeyEx(hKey,index,str,&num,NULL,NULL,NULL,NULL)==0 )
		{	//然后遍历子项后进行递归
			printf("%s\n",str);
			strcpy(temp,SubKey);
			strcat(temp,"\\");
			strcat(temp,str);
			EnumReg(temp);			//递归
			
			index++;
			num = MAX_PATH;
		}
	}
	else
	{
		printf("Can't Open The Key!\n");
	}
	
	RegCloseKey(hKey);


}

void main()
{

	//EnumRegKey();
	EnumReg("software");
	printf("\n\n符合条件的值共有:%d 条!\n\n",ResultCount);


}


CARLA语义标签自定义全流程:从UE文件夹到Python枚举的跨层映射 语义分割是自动驾驶感知训练的基础能力,其核心在于建立物体类别与像素值之间的确定性映射。CARLA通过枚举ID驱动的跨层绑定机制,将Unreal Engine中的静态网格体、C++端的类型定义、颜色调色板及Python API统一为一套零歧义的语义标签体系。该设计规避了字符串匹配带来的大小写与拼写风险,保障了数据在仿真—标注—训练全链路中的可追溯性与一致性。典型应用场景包括交通锥、人行横道等自定义对象的精细化标注,支撑感知模型对长尾类别的泛化能力提升。本文聚焦CARLA 0.9.14源码级实践,详解Objec 阅读详情

相关推荐

C++程序员视角:彻底清除Windows顽固广告弹窗的系统级攻防指南

在Windows系统管理与安全领域,理解软件的持久化驻留机制是排查和清理恶意或不受欢迎程序(PUP)的核心。其原理通常涉及利用操作系统的合法功能,如通过计划任务、系统服务、注册表自启动项及进程守护等技术,实现程序在用户无感知情况下的长期运行与自动恢复。掌握这些底层技术对于系统安全、性能优化及恶意软件防御具有重要价值,尤其适用于解决广告弹窗、捆绑软件等常见用户痛点。本文以典型的“屏保广告”清理为例,系统性地演示了如何运用进程分析、自启动项扫描、文件系统取证等工程实践方法,并融入C/C++代码示例,为开发者提供

weixin_34161064的博客 288

VC++递归删除注册表子键

转载:VC++递归删除注册表子键文章出处:http://www.diybl.com/course/3_program/c++/cppxl/20081119/152041.html VC6中没有提供删除带有子键的注册表键,而最新的.net则提供了这个函数。不过很多程序还是用VC6写的。我就发个自己弄出来的代码:   测试绝对能用! /****DeleteSubKeyTree(HK

woyaowenzi的专栏 6265

易语言实现文件枚举与多线程搜索模块源码实战

易语言(EPL,Easy Programming Language)是一种面向中文用户的可视化编程语言,由吴涛于2000年推出,旨在降低编程门槛,使初学者尤其是中文母语者能以自然语言方式编写程序。其语法接近中文自然表达,支持快速开发Windows桌面应用。Windows API(Application Programming Interface)是微软为开发者提供的用于与操作系统交互的一组函数接口集合,它构成了Windows平台软件开发的底层基石。

weixin_42433737的博客 1125

C/C++枚举注册表某项下的所有子项【代码示例】

/*  * 版权:  * 文件名称:RegEnumKey.c  * 摘要:枚举注册表下的所有子项   * 当前版本:  * 作者:烈风  * 完成日期:  */ # include # include # include int main(void) { HKEY hKey = NULL; //保存注册表的句柄  TCHAR *subKey = "

技术皮皮虾 6617

注册表枚举

注册表枚举的相关的操作,主要是枚举相关的键值的操作!

485芯片AB波形正负半周的问题探讨

      本人做的一个产品,产品的其中一个接口是RS485的,我们使用的芯片是MAX13487E。MCU是STM32F103,MCU的USART通过光耦隔离后,接到MAX13487E。因为STM32F103的VCC是3.3V的,MAX13487E的VCC是5V。      部分原理图如下,上述部分电路参考了官方的参考设计,现在测试的AB波形时候发现如下问题。1.把R10和R16改为1k,示波器C...

qq_26308521的博客 1万+

注册表编程

目录 一、注册表基础 1.1注册表历史背景 1.2注册表作用 1.3注册表结构 1.4各根键主要存储的信息 1.5手动操作注册表 二、注册表编程 2.1相关函数分类 2.2项管理函数 2.2.1项创建函数 2.2.2项打开函数 2.2.3项关闭函数 2.2.4项删除函数 2.3值项管理函数 2.3.1值设置函数 2.3.2值查询函数 2.3.3值项删除函数 2.

超超吵吵的专栏 621

用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑

本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。

weixin_42524171的博客 504

C++注册表操作

1. 基础知识 注册表的组织方式跟文件目录比较相似,主要分为根键、子键和键值项三部分, 1.1 根键 分为5个,分别为: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG 1.2 子键 可以有多个子键和键值项,就像一个目录中可以有多个子目录和多个文件一样。 1.3 键值项 可以理解为......

sinat_41752325的博客 5232

初识数据结构之入门必懂——线性表(顺序表)

本文将介绍数据结构中的线性表与线性表中最简单的结构——顺序表

m0_64705485的博客 904

STM32F030F4P6实战:LL库+DMA驱动WS2812全流程(附避坑指南)

本文详细介绍了如何使用STM32F030F4P6的LL库和DMA驱动WS2812 LED灯带的全流程,包括硬件选型、CubeMX配置、LL库与DMA关键实现、数据格式转换及调试技巧。特别提供了避坑指南,帮助开发者避免常见错误,提升开发效率。

weixin_29194693的博客 484

C++自动查询/搜索串口号

在VS平台上用C++查找串口号,采用注册表搜索串口号的方式,本程序直接将搜索到的串口号用阿拉伯数字打印到DOS屏幕上,相关代码如下: #include "stdafx.h" #include&lt;iostream&gt; #include&lt;Windows.h&gt; using namespace std; int GetComList_Reg() { HKEY hkey; ...

飞舞哲 3547

向华为学习——解读华为战略规划SP与业务计划BP流程【附全文阅读】

该方案针对大中型企业高管及战略团队,系统拆解华为SP(4-9月中长期规划)与BP(10-12月年度执行)双轨体系,形成"战略制定-业务设计-资源配置-绩效解码"闭环。SP侧重市场趋势分析、业务优先级与资源分配,BP细化KPI、预算及行动计划。通过价值树、战略解码等工具实现战略到部门/个人的目标分解,强化跨部门协同与过程管控。配套17份华为实战资料(包括战略管理、流程优化、销售组织建设等核心方法论),助力企业建立规范的战略执行体系,实现资源优化与绩效落地。

cdfunlove的博客 765

Geek Uninstaller 注册表级卸载实战:彻底清除软件残留的完整方案

文章摘要 本文深入分析了Windows自带卸载功能的局限性,揭示了软件残留的"三层漏网"机制(运行时数据、共享组件、注册表扩散),并详细解析了Geek Uninstaller的工作原理。通过六个阶段的工作流程(程序枚举、卸载执行、文件扫描、注册表扫描、清单生成和清理执行),Geek能实现更彻底的卸载效果。文章以WPS Office为案例,对比了系统卸载和Geek卸载的效果差异(986MB残留 vs 完全清除),并给出了强制移除的适用边界判断流程图。最后指出强制移除无法处理的特殊情况(手动删除部分文件、驱动程

2401_89926894的博客 577

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 661

帆软报表导出各种格式之后台导出

我们前面介绍了帆软报表在界面上的导出是通过类似的URL:http://localhost:8075/webroot/decision/view/report?op=export&sessionID=10653244-3e46-408c-bc54-f89a214a9bc7&format=image&extype=PNG 来完成的,就是带OP=export以及format参数来完成的。如果不从界面传参数,比如我们自己实现了一个HTTP接口,也可以通过传参数format来完成各种格式的导

帆软爱好者的专栏 4269

serial 库端口枚举功能深度探索:自动发现系统串口设备

在嵌入式开发、物联网项目和工业自动化中,串口通信是连接硬件设备的重要方式。**serial 库**作为一款跨平台的 C++ 串口通信库,提供了强大的端口枚举功能,能够自动发现系统中的串口设备,为开发者节省大量调试时间。本文将深入解析这一核心功能的实现原理与实用技巧,帮助你快速掌握串口设备的自动识别方法。 ## 什么是串口端口枚举? 串口端口枚举是指通过编程方式自动检测并列出系统中所有可用的串口

gitblog_00519的博客 1150

【新能源汽车测试工程师必看!DBC文件50条实战技巧,看懂这篇直接封神】

如果你是新能源汽车研发/测试工程师,还在为信号解析错误、报文找不到、DBC看不懂、实车故障复现不了头疼——那这篇文章,你一定要!在整车电控开发里,DBC = CAN总线的官方字典。没有DBC,报文就是一串乱码;读不懂DBC,测试寸步难行;用不好DBC,排查故障全靠猜。本文总结50条全网最实用、最贴近实车、最能解决问题的DBC技巧,从基础语法到新能源专用信号,从工具操作到故障排错,全部来自一线台架、实车、高压平台实战经验。不废话、不空谈、不玄学,全是能直接落地的硬货!

优快云-新能源汽车研发测试专业博主 1365

The coding gentleman's guide to detecting the .NET Framework

原帖地址http://www.codeproject.com/KB/dotnet/DetectDotNet.aspx A C++ class that will detect and enumerate the active CLR versions on a machine Overview The CDetectDotNet class detects whether th...

bankelei6741的博客 192

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

c++ map 获取key列表_C/C++编程笔记:获取电脑串口名称列表

序在工作中如果使用到串口,我们在打开的时候,都要做如下操作:1、右键“我的电脑”打开右键菜单;2、然后选择并点击“管理”;3、在弹出的计算机管理器中选择“设备管理器”;(有的右键菜单直接有设备管理器)4、在右侧选择“端口”,展开看串口信息;5、在软件中输入串口名,然后打开。有没有什么办法省去这样的操作呢,直接在软件打开的时候(或者通过按钮刷新信息)获取到已有的串口列表信息?注册表在windows操...

weixin_39752215的博客 452

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Windows注册表清理与系统优化:原理、工具与安全实践指南

Windows注册表作为操作系统的核心配置数据库,存储着软件设置、硬件信息和用户偏好。其分层结构的设计虽然高效,但软件安装卸载过程中产生的残留项会逐渐累积,形成注册表垃圾,导致系统启动缓慢、软件冲突和稳定性下降。理解注册表的工作原理,是进行有效系统维护的基础。通过专业的注册表清理工具,可以智能扫描无效文件路径、孤立CLSID和废弃的扩展名关联,安全移除这些冗余条目,从而恢复系统性能。在工程实践中,结合系统隐藏设置调整功能,如管理启动项和优化服务,能够进一步提升操作效率。本文聚焦于注册表清理与系统优化,通过分

weixin_34327761的博客 457

安卓开发读取串口名称_C/C++编程笔记:获取电脑串口名称列表

序在工作中如果使用到串口,我们在打开的时候,都要做如下操作:1、右键“我的电脑”打开右键菜单;2、然后选择并点击“管理”;3、在弹出的计算机管理器中选择“设备管理器”;(有的右键菜单直接有设备管理器)4、在右侧选择“端口”,展开看串口信息;5、在软件中输入串口名,然后打开。有没有什么办法省去这样的操作呢,直接在软件打开的时候(或者通过按钮刷新信息)获取到已有的串口列表信息?注册表在windows操...

weixin_29391349的博客 780

Hiberlite社区贡献指南:参与开源C++ ORM项目开发

欢迎来到Hiberlite社区!🎉 作为一款轻量级、易用的C++ ORM库,Hiberlite为C++开发者提供了简单高效的SQLite数据库操作体验。如果你想为这个优秀的开源项目贡献代码,这份完整指南将帮助你快速上手,从环境搭建到提交PR,一步步成为Hiberlite的活跃贡献者。 ## 为什么选择Hiberlite?🤔 Hiberlite是一个灵感来自Boost.Serializati

gitblog_00932的博客 313

Windows内核模式回调机制详解:基于TelemetrySourcerer的研究视角

Windows内核模式回调机制是操作系统安全体系的重要组成部分,它允许内核组件在特定系统事件发生时接收通知。TelemetrySourcerer作为一款专注于枚举和禁用常见遥测源的工具,为我们研究这些回调机制提供了独特视角。本文将深入解析Windows内核回调的工作原理、主要类型及其在遥测系统中的应用。 ## 什么是内核模式回调机制? 内核模式回调本质上是一种特殊的函数指针,当特定系统事件(如

gitblog_00444的博客 551
上一篇: Graphics::Clear(Color::Transparent)不会生效
下一篇: 关于用Fiddler抓localhost包的问题
zzstack
博客等级 码龄15年 12粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值