RegEnumValueW返回值234,什么情况?

windows函数之注册表函数 比较详细的windows操作系统中的注册表操作函数集合。 阅读详情

最近不少反馈说字体少了,于是排查了一下,居然是注册表查询的时候丢弃了,问题就出在RegEnumValueW这个函数上。

 

经过一番debug,查到RegEnumValueW返回值为234,然后无法获取键值的字符串。查询了一下,在winerror.h有记录。

win error

所以只能改改代码,对返回值进行处理。

下面是完整的读注册表操作:


		LONG result;
		DWORD maxValueNameSize, maxValueDataSize;
		result = RegQueryInfoKeyW(hKey, 0, 0, 0, 0, 0, 0, 0, &maxValueNameSize, &maxValueDataSize, 0, 0);
		if (result != ERROR_SUCCESS) {
			return 0;
		}
		DWORD valueIndex = 0;
		wchar_t *valueName = (wchar_t *)malloc(maxValueNameSize * sizeof(wchar_t));
		unsigned char *valueData = (unsigned char *)malloc(maxValueDataSize * sizeof(wchar_t));
		DWORD valueNameSize, valueDataSize, valueType;
		do {
			valueDataSize = maxValueDataSize;
			valueNameSize = maxValueNameSize;
			valueName[0] = 0;
			valueData[0] = 0;
			result = RegEnumValueW(hKey, valueIndex, valueName, &valueNameSize, 0, &valueType, valueData, &valueDataSize);
			if (result == ERROR_MORE_DATA)
			{
				maxValueNameSize <<= 1;
				maxValueDataSize <<= 1;
				if (valueName)
				{
					free(valueName);
				}
				if (valueData)
				{
					free(valueData);
				}
				valueName = (wchar_t *)malloc(maxValueNameSize * sizeof(wchar_t));
				valueData = (unsigned char *)malloc(maxValueDataSize * sizeof(wchar_t));
				if (valueName && valueData)
				{
					continue;
				}
			}
			valueIndex++;
			if (result != ERROR_SUCCESS || valueType != REG_SZ) {
				continue;
			}
			// Found a match
			//wprintf(L"valueName=%s\n", valueName);
			//wprintf(L"valueData=%s\n", (wchar_t *)valueData);
			//....
		} while (result != ERROR_NO_MORE_ITEMS);
		
	if (valueName)
	{
		free(valueName);
	}
	if (valueData)
	{
		free(valueData);
	}
	//.....

【WIN】windows自启动项查询整理 Windows 自启动项整理 阅读详情

相关推荐

微信聊天记录解密,必须是root的手机

手机上安装x-plore软件,将/data/data目录的相关EnMicroMsg.db auth_info_key_prefs.xml拷贝到/storge/emulated/0目录后才可以拷贝到电脑。路径:/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml。但是是加密过的 需要解密 解密密码生成规则是手机IMEI+微信UIN md5(32位小写)后的前7位。安卓手机要root测试版本微信要7或者8版本都可以。选择message表。

venus60的专栏 1005

RegEnumValue的使用方法

DWORD wStrSize = 512; CString strValue; TCHAR *wStr = new TCHAR[wStrSize]; DWORD dwCountOfSubKey; DWORD dwCountOfValue; DWORD dwType; LONG lResult; CRegKey regKey; regKey.Open(HKEY_CURRENT_US

feidegengao的专栏 1万+

基于C#的跨平台上位机开发:一次编写,多平台运行

摘要: 本文探讨了如何利用C#进行跨平台上位机开发,以适配Windows、Linux、macOS等多平台需求。通过分析传统单平台开发的局限性(如API差异、硬件接口兼容性),提出基于.NET 5/6/7的解决方案,重点推荐Avalonia(类WPF的跨平台UI框架)和GtkSharp(基于GTK+)实现图形界面。同时,针对硬件通信需求,介绍了System.IO.Ports串口通信和LibUsbDotNet的跨平台支持,并强调多平台调试(VS Code、Docker)的重要性,最终实现一次编码、多端部署的高效

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1406

RegEnumValue读取注册表不完整问题

问题描述:在用RegEnumValue枚举串口资源时,注册表中有多个串口,但是RegEnumValue在读取时,只能读取其中一部分,不能完全枚举所有串口。 原因及解决办法: Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName); 在每次读取后,dwName和dwSi

qyl_qiyalu的博客 4214

将赛灵思 SDK 工程移植到 Vitis 的分步指南

注:本文转自赛灵思中文社区论坛,源文链接在此。本文原作者为XILINX工程师。 以下为个人译文,仅供参考,如有疏漏之处,还请不吝赐教。 您是赛灵思软件开发套件 (SDK) 用户吗? 您是否正在计划将自己的工程移植到 Vitis 软件平台? 那么本篇工程移植分步指南将能祝您一臂之力。 从 2019.2 版开始,赛灵思 SDK 开发环境已统一整合到全功能一体化的 Vitis™ 统一软件平台中。 尊敬的 SDK 用户,您只需轻点几下鼠标即可体验这一功能丰富的工具! 马上开始将工程从赛灵思 S

weixin_45825101的博客 1731

【MFRC522】STM32与MFRC522的SPI通信优化及常见问题解析

本文深入解析了STM32与MFRC522进行SPI通信的优化方法与常见问题。从基础的硬件连接到SPI时序优化,再到关键的寄存器配置(如RFCfgReg设为0x4F以提升读卡稳定性),文章提供了详细的调试技巧和实战排坑指南,帮助开发者实现稳定高效的IC读卡应用。

yhn45678901的博客 841

RegOpenKeyEx | RegEnumValue | RegDeleteValue - WINDOWS API 第四弹有关注册表的内容,以删除注册表内容为例。

RegOpenKeyEx | RegEnumValue | RegDeleteValue - WINDOWS API 第四弹有关注册表的内容,以删除注册表内容为例。 我们在windows上的应用在安装时一般都会写入注册表点信息,这些信息的形式和内容、目的都不同。一般注册表上的内容用户极少去动,所以把应用策略信息存在注册表上相对安全。操作注册表也是开发windows程序的必备技能。

Bobowen的博客 811

自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真

自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P

zhudj08的博客 1万+

RegEnumValue读取键值需要注意的地方

参考代码如下:for (DWORD j = 0;j < cValue;j++){ RegEnumValue(hKey,j,szSubValueName,&cbSubValueName,0,NULL,szSubValueDate,&cbSubValueDate); _tprintf(L"%ws:/n%ws/n",szSubValueName,szSubValueDate

starmate的专栏 1000

YOLOv11 改进策略:引入 NWD 损失函数提高小目标检测精度

YOLO(You Only Look Once)是一种实时目标检测算法,能够有效地预测图像中多个物体的边界框和类别概率。其高效性使它成为自动驾驶、视频监控等领域的理想选择。NWD 是一种基于 Wasserstein 距离的损失函数,其通过归一化处理,更好地评估预测框和真实框之间的几何偏差。这种方法不仅仅关注重叠区域,而且考虑中心点和尺度信息,提高了对小目标的敏感度。

走向CTO的路上... 2001

Python爬虫实战:高德地图POI信息爬取(餐馆/加油站等),附选址分析技巧

高德API配置AMAP_KEY = "你的高德API Key" # 替换成自己的Key# 爬取参数CITY = "成都" # 城市DISTRICTS = ["锦江区"] # 区域,可添加多个(比如["锦江区", "武侯区"])KEYWORDS_LIST = ["川菜馆", "加油站"] # 要爬取的POI类型TYPES = {"川菜馆": "050101", # 餐饮服务→中餐→川菜馆(高德POI分类编码)"加油站": "110100" # 交通设施→加油站。

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

【WIN32】【C/C++】枚举 注册表子项

调用`RegEnumValue`获取注册表某一路径下的所有键值。

此地无银 690

华为HCIE之TS部分整理

TroubleShooting 整体拓扑 1. MSTP 题目需求:site1 中,CLIENT1 属于 VLAN12,CLIENT3 属于 VLAN34;MSTP 中的 VLAN12 属于 instance1,vlan34 属于 instance2;两个 instance 的主备根桥分别在 SW1 和 SW2 上,并且要求 CLIENT1访问 R1 时经过的路径是 SW3-SW1-R1;同时要求 CLIENT3 访问 R1 时经过的路径是SW3-SW2-R1; 排错思路: ①查看SW3 SW1 SW

ledrsnet的博客 5756

Windows注册表的读写操作

本文介绍了Windows注册表的基本知识,以及C++中打开\关闭\查询\修改注册表的常用接口。

_Santiago的博客 3313

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

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

注册表编程扫盲(三)

三。RegQueryValueEx和RegEnumValue    以上都是在说如何写注册表,不过很多情况下都要读注册表的。啊,来看一下有哪几个API,1,2,...怎么又这么多?算了,就说两个吧,应该够用了的。还是先说一下RegQueryValueEx吧,这回看不出什么意思了,Query是什么意思呢?别急,我先查一下字典,Query,Query,查到了,字典说是"怀疑"的意思,好象解释不通啊。唉

0ffs3t 1465

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C/C++ 实现Windows注册表操作

Windows注册表(Registry)是Windows操作系统中用于存储系统配置信息、用户设置和应用程序数据的一个集中式数据库。它是一个层次结构的数据库,由键(Key)和值(Value)组成,这些键和值被用于存储各种系统和应用程序的配置信息。

微软技术分享 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

关于RegQueryValueEx两个小问题

最近使用到RegQueryValueEx这个函数,发现了两个小问题,总是解决不了,上网上找资料发现不是找不到就是找的不对,现在终于解决了,所以分享给大家来看看,给那些还在困惑中徘徊的和我一样的菜鸟看看,大牛就就直接飘过吧。   RegQueryValueEx这个函数MSDN是这样解释的 This function retrieves the type and data for a s

xingyuan1hao的专栏 1000

Windows 注册表相关API总结

一、注册表简介 注册表实际上是一个管理配置系统运行参数的核心数据库,它记录了安装软件与运行程序的关联关系,计算机的硬件配置等信息。可以说计算机上所有针对硬件、软件、网络的操作都是源于注册表的。 可以使用 regedit.exe 这个系统提供的注册表编辑器去管理编辑注册表,他只是一个编辑器不是注册表的文件。 如上图所示,注册表预设有五个根键: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USER HKEY_CURRENT_CONFI

空持百千偈的博客 4997

RegEnumValue调用失败返回ERROR_MORE_DATA

BOOL RegQueryKeyValue( HKEY hKey, TCHAR *lpName, TCHAR *name, TCHAR *value ){ HKEY handle; if ( ERROR_SUCCESS != RegOpenKeyEx( hKey, lpName, NULL, KEY_ALL_ACCESS,  &handle ) ) { return FALSE; } TCHAR achkey[MAX_KEY_LENGTH]; DWORD cbname; TCHAR achclass[MA

Sam.yu的专栏 4565

Windows API - RegEnumValue

1 #include <windows.h> 2 #include <stdio.h> 3 #include <tchar.h> 4 5 #define MAX_KEY_LENGTH 255 6 #define MAX_VALUE_NAME 16383 7 8 void QueryKey(HKEY ...

weixin_30599769的博客 305

RegQueryValueEx函数返回234错误解决方法

我们在调用RegQueryValueEx这个函数,在注册表中读取字符串形式的数据时候,经常会出现返回234错误。MSDN说是 If the buffer specified by lpData parameter is not large enough to hold the data, the function returns the value ERROR_MORE_DATA,Window N

编程人生的专栏 8733

RegQueryValueEx返回234错误解决方法

<br />我们在调用RegQueryValueEx这个函数,在注册表中读取字符串形式的数据时候,经常会出现返回234错误。 MSDN说是 If the buffer specified by lpData parameter is not large enough to hold the data, the function returns the value ERROR_MORE_DATA, Window NT: If hKey specifies HKEY_PERFORMANCE_DATA and t

shen8686的专栏 4180

如何使用window的api获取串口名称和串口数量

这篇文章讲解一下如何使用window的api获取串口名称和串口数量。在遍历过程中,获取了每个注册表值(即串口名称)并存储在。这段代码使用 Windows API 中的。函数来打开和遍历注册表项,具体来说是。最后,输出获取到的串口信息。

公孙莫言的博客 1673

win32查询注册表失败234

失败返回234: DWORD size; RegQueryValueEx(hKey, “”, NULL , type, (LPBYTE)data, &amp;size): 查询失败的时候必须给size一个初始化的值,不然会查询失败。

g957847052的博客 624
上一篇: 一步步CEF(2)之编译ceflicent
下一篇: 一步步CEF(3)之JavaScript与C++互动
狼风123
博客等级 码龄19年 1058粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值