注册表编辑器上显示的信息和用WinApi读到的信息不一样是怎么回事
我想修改.html文件的默认打开方式,可是用了所有常规方法都改不了,于是我查看了注册表上的HKEY_CLASSES_ROOT/.html,发现第一个键的值为“QQBrowser.file",(之前装过QQ浏览器,而且电脑里装有腾讯的电脑管家)。而且没办法在regedit上直接改,一改就直接弹出”写入错误“的对话框。
最后我想试试用WinAPI改一下。先调用了RegEnumValue()函数显示这个键的值,代码如下(C语言)
CHAR childValueName[MAX_SIZE]; // 接受键名字
DWORD childValueNameSZ = MAX_SIZE; // 数组大小
DWORD childValueType; // 键值类型
BYTE childValueData[MAX_SIZE]; // 接受键值内容
DWORD childValueDataSZ = MAX_SIZE; // 数组大小
LONG ret = RegEnumValue(
hKey, // 要枚举的父键句柄
0, // 序号
childValueName, // 接受名字
&childValueNameSZ, // 传入/传出长度
NULL,
&childValueType, // 接受键值类型
childValueData, // 接受键值内容
&childValueDataSZ); // 传入/传出长度
puts(childValueName); // 输出键名
puts((char *)childValueData); // 输出键值
结果惊奇的发现,输出的键值和regedit上显示的键值竟然不一样,为“UCHTML"(现在用的UC浏览器),是不是意味着这个值的内容已经在注册表中被修改,但是因为某些原因无法被正常读取和使用。我比较好奇这是怎么做到的,希望各位前辈指点一二,多谢各位了!
第一次发帖好紧张~
最后我想试试用WinAPI改一下。先调用了RegEnumValue()函数显示这个键的值,代码如下(C语言)
CHAR childValueName[MAX_SIZE]; // 接受键名字
DWORD childValueNameSZ = MAX_SIZE; // 数组大小
DWORD childValueType; // 键值类型
BYTE childValueData[MAX_SIZE]; // 接受键值内容
DWORD childValueDataSZ = MAX_SIZE; // 数组大小
LONG ret = RegEnumValue(
hKey, // 要枚举的父键句柄
0, // 序号
childValueName, // 接受名字
&childValueNameSZ, // 传入/传出长度
NULL,
&childValueType, // 接受键值类型
childValueData, // 接受键值内容
&childValueDataSZ); // 传入/传出长度
puts(childValueName); // 输出键名
puts((char *)childValueData); // 输出键值
结果惊奇的发现,输出的键值和regedit上显示的键值竟然不一样,为“UCHTML"(现在用的UC浏览器),是不是意味着这个值的内容已经在注册表中被修改,但是因为某些原因无法被正常读取和使用。我比较好奇这是怎么做到的,希望各位前辈指点一二,多谢各位了!
第一次发帖好紧张~
...全文
相关推荐
WinAPI最全手册
它支持32位和64位架构,是编写原生Windows应用程序的基础。Win32 API不仅包含了基础的GUI组件创建和管理,还包括了网络通信、安全、注册表操作等多种高级功能。
c++ MFC & winAPI
**资源操作**:加载和使用位图、图标、菜单等资源。6. **线程和进程**:理解和使用线程,以及进程间通信(IPC)。7. **文件和注册表操作**:打开、读写、关闭文件,以及访问注册表。8.
注册表操作mfc
注册表是Windows操作系统中的一个重要组件,它存储了系统和应用程序的各种配置信息,包括硬件设备、软件设置、用户首选项等。
WinCE下的注册表编辑程序.
**安全考虑**:由于注册表对系统运行至关重要,任何不正确的修改都可能导致系统不稳定甚至崩溃。因此,编辑器需要有防止意外修改的保护措施,比如备份功能,或者在修改前提示用户确认。
注册表实用手册(2.73版chm)
**注册表编辑器**:介绍如何使用RegEdit工具,包括打开、浏览、编辑、导入和导出注册表项,以及安全设置和备份恢复。3.


