注册表编辑器上显示的信息和用WinApi读到的信息不一样是怎么回事

时间:2023-01-19 21:22:10
我想修改.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浏览器),是不是意味着这个值的内容已经在注册表中被修改,但是因为某些原因无法被正常读取和使用。我比较好奇这是怎么做到的,希望各位前辈指点一二,多谢各位了!
第一次发帖好紧张~

3 个解决方案

#1


Regedit中在注册表项上点鼠标右键、权限……

#2


引用 1 楼 zhao4zhong1 的回复:
Regedit中在注册表项上点鼠标右键、权限……

改成完全控制了,还是不能写入

#3


引用 2 楼 fourele 的回复:
Quote: 引用 1 楼 zhao4zhong1 的回复:

Regedit中在注册表项上点鼠标右键、权限……

改成完全控制了,还是不能写入

重启进安全模式再试试。

#1


Regedit中在注册表项上点鼠标右键、权限……

#2


引用 1 楼 zhao4zhong1 的回复:
Regedit中在注册表项上点鼠标右键、权限……

改成完全控制了,还是不能写入

#3


引用 2 楼 fourele 的回复:
Quote: 引用 1 楼 zhao4zhong1 的回复:

Regedit中在注册表项上点鼠标右键、权限……

改成完全控制了,还是不能写入

重启进安全模式再试试。