枚举注册表键名与键值

Unity PlayerPrefs键值对查看器:注册表读取与调试工具开发 在Unity开发中,本地数据持久化是游戏配置、进度与玩家偏好的关键基础设施,而PlayerPrefs作为最常用的轻量级存储方案,长期面临官方API无法枚举键值对的困境。当调试遇到脏数据残留、协作时难以定位本地写入内容等问题时,开发者往往束手无策。理解Windows注册表中Unity PlayerPrefs的存储原理,掌握HKEY_CURRENT_USER下的路径规则与字符串、二进制数据类型判别逻辑,即可绕开API限制,基于C#与Microsoft.Win32构建自定义编辑器扩展。借助EditorWindow 阅读详情

枚举注册表键名与键值的一个函数:

// QueryKey - Enumerates the subkeys of key, and the associated 
//    values, then copies the information about the keys and values 
//    into a pair of edit controls and list boxes. 
// hDlg - Dialog box that contains the edit controls and list boxes.
// hKey - Key whose subkeys and values are to be enumerated.
 
void QueryKey(HWND hDlg, HANDLE hKey) 
{ 
    CHAR     achKey[MAX_PATH]; 
    CHAR     achClass[MAX_PATH] = "";  // buffer for class name 
    DWORD    cchClassName = MAX_PATH;  // size of class string 
    DWORD    cSubKeys;                 // number of subkeys 
    DWORD    cbMaxSubKey;              // longest subkey size 
    DWORD    cchMaxClass;              // longest class string 
    DWORD    cValues;              // number of values for key 
    DWORD    cchMaxValue;          // longest value name 
    DWORD    cbMaxValueData;       // longest value data 
    DWORD    cbSecurityDescriptor; // size of security descriptor 
    FILETIME ftLastWriteTime;      // last write time 
 
    DWORD i, j; 
    DWORD retCode, retValue; 
 
    CHAR  achValue[MAX_VALUE_NAME]; 
    DWORD cchValue = MAX_VALUE_NAME; 
    CHAR  achBuff[80]; 
 
    // Get the class name and the value count. 
    RegQueryInfoKey(hKey,        // key handle 
        achClass,                // buffer for class name 
        &cchClassName,           // size of class string 
        NULL,                    // reserved 
        &cSubKeys,               // number of subkeys 
        &cbMaxSubKey,            // longest subkey size 
        &cchMaxClass,            // longest class string 
        &cValues,                // number of values for this key 
        &cchMaxValue,            // longest value name 
        &cbMaxValueData,         // longest value data 
        &cbSecurityDescriptor,   // security descriptor 
        &ftLastWriteTime);       // last write time 
 
    SetDlgItemText(hDlg, IDE_CLASS, achClass); 
    SetDlgItemInt(hDlg, IDE_CVALUES, cValues, FALSE); 
 
    SendMessage(GetDlgItem(hDlg, IDL_LISTBOX), 
        LB_ADDSTRING, 0, (LONG) ".."); 
 
    // Enumerate the child keys, until RegEnumKeyEx fails. Then 
    // get the name of each child key and copy it into the list box. 

    SetCursor(LoadCursor(NULL, IDC_WAIT)); 
    for (i = 0, retCode = ERROR_SUCCESS; 
            retCode == ERROR_SUCCESS; i++) 
    { 
        retCode = RegEnumKeyEx(hKey, 
                     i, 
                     achKey, 
                     MAX_PATH, 
                     NULL, 
                     NULL, 
                     NULL, 
                     &ftLastWriteTime); 
        if (retCode == (DWORD)ERROR_SUCCESS) 
        {
            SendMessage(GetDlgItem(hDlg, IDL_LISTBOX), 
                LB_ADDSTRING, 0, (LONG) achKey); 
        }
    } 
    SetCursor(LoadCursor (NULL, IDC_ARROW)); 
 
    // Enumerate the key values. 
    SetCursor(LoadCursor(NULL, IDC_WAIT)); 
 
    if (cValues) 
    {
        for (j = 0, retValue = ERROR_SUCCESS; 
                j < cValues; j++) 
        { 
            cchValue = MAX_VALUE_NAME; 
            achValue[0] = '/0'; 
            retValue = RegEnumValue(hKey, j, achValue, 
                &cchValue, 
                NULL, 
                NULL,    // &dwType, 
                NULL,    // &bData, 
                NULL);   // &bcData 
 
            if (retValue == (DWORD) ERROR_SUCCESS ) 
            { 
                achBuff[0] = '/0'; 
 
                // Add each value to a list box. 
                if (!lstrlen(achValue)) 
                    lstrcpy(achValue, "<NO NAME>"); 
                wsprintf(achBuff, "%d) %s ", j, achValue); 
                SendMessage(GetDlgItem(hDlg,IDL_LISTBOX2), 
                    LB_ADDSTRING, 0, (LONG) achBuff); 
            } 
        }

    SetCursor(LoadCursor(NULL, IDC_ARROW)); 
}

Windows注册表子项的枚举与操作 Windows操作系统中的注册表是一个重要的系统数据库,用于存储系统和应用程序的配置信息。在本文中,我们将介绍如何枚举和操作Windows注册表子项,并提供相应的源代码示例。通过以上示例代码,我们可以实现对Windows注册表子项的枚举和操作。请注意,在使用注册表操作时,需要小心谨慎,确保不会意外删除或修改关键的系统配置信息,以免造成系统故障。除了枚举子项,我们还可以对注册表进行其他操作,如创建、删除和修改子项。方法获取该父级子项下的所有子项名称,并通过循环打印输出了这些子项的名称。路径下的注册表子项。 阅读详情

相关推荐

《Sysinternals实战指南》16.3 RegDelNull 实战:清理包含 Null 字符的注册表键值,排查系统“脏数据”

本文介绍了Sysinternals工具RegDelNull的实战应用,重点讲解了如何清理包含NULL字符的注册表键值。这类"脏数据"通常表现为可见但无法删除的注册表项,可能由恶意软件、安装异常或程序错误导致。文章详细说明了工具使用方法,包括基本参数、典型应用场景(如卸载残留清理和恶意软件处理)以及安全操作建议(如备份和范围控制)。最后总结了RegDelNull的核心适用场景:当遇到"看得见却删不掉"的可疑注册表键时,应考虑使用该工具进行针对性清理。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。以真实案例梳理排查思路与解决步骤,让运维经验清晰、可复用。 2万+

易语言取数值注册项写注册项删注册项

本课视频教程讲解了易语言取数值注册项,取字节集注册项,注册项是否存在,写注册项,删除注册项,等命令。 视频链接: 511遇见易语言教程 教程源码: .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击, , , 取文本注册项 .局部变量 a, 文本型 ' 运行 (“regedit”, 假, ) a = 取文本注册项 (3, “AlbumArt\ThumbnailStorePath”, “取文本失败”) 调试输出 (a) ' C:\Progr...

511遇见 4541

易语言键值表

易语言键盘所有键值,便于新手编译

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

使用Windows API 函数中的RegOpenKeyEx()函数和RegEnumKeyEx()函数来实现对注册表某项下的所有子项进行枚举。 1、RegOpenKeyEx 函数: 原形:LONG RegOpenKeyEx(               HKEY hKey,     // 要打开主键名               LPCTSTR lpSubKey, // 需要打

技术皮皮虾 4684

易语言枚举注册表项与键值-易语言

易语言枚举注册表项与键值

易语言源码易语言枚举注册表项与键值.rar

易语言源码易语言枚举注册表项与键值.rar

咱们继续学Java——高级篇 第二百五十三篇:之Java进阶之本地方法:访问Windows注册表的代码深度解析

在Java学习的征程中,我们不断深入代码底层,每一次对关键代码的深度解析都是提升编程能力的关键。我写这篇博客的目的,就是希望与大家一同深入剖析Java本地方法中访问Windows注册表的代码实现细节,助力大家在Java与其他语言交互编程领域掌握更核心的技能。今天,我们将详细解读`Win32RegKey`类及其相关类中本地方法的代码逻辑,包括获取注册表键值、设置键值以及枚举键名字的操作,相信这会让你在处理Java与系统底层交互时更加游刃有余。

wj_rdk的博客 1966

易语言源码WIN32API功能150个(屏幕篇).rar

易语言源码WIN32API功能150个(屏幕篇).rar 易语言源码WIN32API功能150个(屏幕篇).rar 易语言源码WIN32API功能150个(屏幕篇).rar 易语言源码WIN32API功能150个(屏幕篇).rar 易语言源码WIN32API功能150个(屏幕篇).rar 易语言源码WIN32API功能150个(屏幕篇).rar

如何枚举系统COM串口

CRegKey RegKey; int nCount = 0; //系统COM端口的注册表信息就在该目录下。 if(RegKey.Open(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm") == ERROR_SUCCESS) { while(true) { ...

iteye_8029的博客 311

易语言源码枚举注册表.rar

易语言源码

易语言枚举注册表

枚举注册表系统结构:取文本,取数值,取字节集,默认,RegEnumKeyEx,RegEnumKey,RegCreateKey,RegOpenKey,RegOpenKeyEx,RegCloseKey,RegEnumValue, ======窗口程序集1 || ||------_组合框1_列表项被选择 || ||------__启动窗

注册表遍历

<br />程序如下:<br /><br />// 11.cpp : Defines the entry point for the console application.<br />//<br />#include "stdafx.h"<br />#include <stdio.h> <br />#include <time.h> <br />#include <windows.h> <br /> <br />HKEY   hKey[]   =   {HKEY_CLASSES_ROOT, <br /> 

yalexiaoqiang的专栏 1578

macOS Monterey官方镜像高速下载指南(附迅雷链接+兼容性清单)

本文提供macOS Monterey官方镜像的高速下载指南,重点介绍利用迅雷等工具加速下载官方安装包的有效方法。同时,详细列出了系统兼容性清单,帮助用户在下载前确认设备支持,并分享了从下载、验证到安全安装的完整流程与常见问题解决方案。

j7k8l的博客 2174

利用 Qt 4.1.0 读取注册表获得串口信息

利用 Qt 4.1.0 读取注册表获得串口信息是本文要介绍的内容,内容不多,用代码解决实际问题,先来看内容!前段时间做串口开发,想做自动扫描串口设备功能 遇到问题现在终于解决程序写得不是很好,功能实现了。按照此方法应该能够扫描到其他硬件。 我遇到的问题: 使用QSettings时 对于注册表中串口信息中的 \Device\Serial0 这种key值 无法找到其value 是 \

ustc_max的专栏 1101

告别Colmap!在ROS2 Humble上,用Fast-LIVO2直接为3D Gaussian Splatting准备数据全流程

本文详细介绍了在ROS2 Humble环境下,使用Fast-LIVO2为3D Gaussian Splatting(3DGS)准备数据的全流程。通过优化Fast-LIVO2配置、实时数据同步机制和3DGS训练参数,显著提升了三维重建效率和质量,相比传统Colmap流程节省95%以上的预处理时间。适用于Ubuntu22.04系统,适合机器人及自动驾驶领域的三维重建应用。

weixin_28688385的博客 586

vtk相机_分别用 VTK 体绘制和面绘制来实现医学图像三维重建;

序言,VTK介绍:VTK 全称为 The Visualization Toolkit (可视化工具),是一个开源、跨平台、自由获取、支持并行计算的图形应用函数;拥有3D 渲染的最新工具、提供3D交互模式以及2D绘图等。VTK 包含一个C++类库,目前提供了众多语言接口,例如 Java、Python、TCL;在三维函数库OpenGL 的基础上采用面向对象设计方法发展起来图形学基本概念和数据...

weixin_39665302的博客 687

MFC 操作注册表

向注册表中添加值: 先创建键,再添加。 void CDlgLogOn::InitRegInfo() { CRegKey key1; key1.Create(HKEY_CURRENT_USER, "software\\Test\\UserInfo"); key1.Open(HKEY_CURRENT_USER, "software\\Test\\UserInfo"); key1.Set

XuePiaoFei1的专栏 1071

<Verilog实现除法器> Verilog实现牛顿-拉夫逊(Newton-Raphson)除法器

阿斯顿阿斯顿啊啊是打发士大夫

IC跳跳鱼的博客 3586

vb.net注册表基本操作

vb.net提供了microsoft.win32类,下面有三个子类,全是针对注册表的,Microsoft.Win32.RegistryKey、Microsoft.Win32.Registry、Microsoft.Win32.RegistryHive  Microsoft.Win32.Registry提供了访问各个注册表中根的值  Microsoft.Win32.Registry.Current

u014189392的博客 3843

避坑指南:Livox Mid-360双雷达SLAM配置中,那些官方文档没说的细节(IP设置、话题分离与时间同步)

本文详细解析了Livox Mid-360双雷达SLAM配置中的关键优化点,包括IP设置、话题分离与时间同步等官方文档未提及的细节。通过实战案例和代码示例,帮助开发者解决点云错位、IMU数据混乱等问题,提升SLAM系统的稳定性和精度。特别针对网络架构设计、驱动修改和时间同步机制提供了专业指导。

weixin_29745609的博客 425

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6112
上一篇: 动态加载DLL
下一篇: 一份进程注入的代码
goingup
博客等级 码龄22年 52粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值