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