求助,VC MFC递归遍历注册表问题
时间:2011-12-01
来源:互联网
先贴代码:
void CLxDlg::EnumerateKeyE(HKEY hKEY,LPCSTR key)
{
HKEY hkey;
if(::RegOpenKeyEx(hKEY,key,0,KEY_WRITE,&hkey) != ERROR_SUCCESS)
{
RegCloseKey(hkey);
return;
}
char subkey[MAX_PATH+1]; //声明最大键长度
DWORD keylen = sizeof(subkey); //设置键实际长度
DWORD Index = 0; //键序数
while(::RegEnumKeyEx(hkey,Index,subkey,&keylen,0,0,0,0) != ERROR_NO_MORE_ITEMS)
{
HKEY h_key;
if(::RegOpenKeyEx(hkey,subkey,0,KEY_WRITE,&h_key) == ERROR_SUCCESS)
{
EnumerateKeyE(h_key,subkey);
::RegCloseKey(h_key);
}
Index++;
keylen = sizeof(subkey); //设置键实际长度
}
}
我是这样调用的 EnumerateKeyE(SubKey,NULL); //遍历注册表
出现的问题是:
While循环那里,下面那个 RegOpenKeyEx , 递归的时候第二次调用时它打开也能成功,不过输出的结果却是乱码,以后的递归全都失败,意思就是说只能打开一级子键,但是子键下面的子键就打不开,下面是调试信息
名称 值
&h_key 0x0012f084 “?” <-- 第一次递归到这里时就是这样了
h_key 0x000001c0
hkey 0x80000001
subkey 0x0012f090 "AppEvents" <-- 这是调用时打开的第一个子键
this 0x0012fd5c
麻烦各位大虾帮我看下,我到底写错在哪里?
void CLxDlg::EnumerateKeyE(HKEY hKEY,LPCSTR key)
{
HKEY hkey;
if(::RegOpenKeyEx(hKEY,key,0,KEY_WRITE,&hkey) != ERROR_SUCCESS)
{
RegCloseKey(hkey);
return;
}
char subkey[MAX_PATH+1]; //声明最大键长度
DWORD keylen = sizeof(subkey); //设置键实际长度
DWORD Index = 0; //键序数
while(::RegEnumKeyEx(hkey,Index,subkey,&keylen,0,0,0,0) != ERROR_NO_MORE_ITEMS)
{
HKEY h_key;
if(::RegOpenKeyEx(hkey,subkey,0,KEY_WRITE,&h_key) == ERROR_SUCCESS)
{
EnumerateKeyE(h_key,subkey);
::RegCloseKey(h_key);
}
Index++;
keylen = sizeof(subkey); //设置键实际长度
}
}
我是这样调用的 EnumerateKeyE(SubKey,NULL); //遍历注册表
出现的问题是:
While循环那里,下面那个 RegOpenKeyEx , 递归的时候第二次调用时它打开也能成功,不过输出的结果却是乱码,以后的递归全都失败,意思就是说只能打开一级子键,但是子键下面的子键就打不开,下面是调试信息
名称 值
&h_key 0x0012f084 “?” <-- 第一次递归到这里时就是这样了
h_key 0x000001c0
hkey 0x80000001
subkey 0x0012f090 "AppEvents" <-- 这是调用时打开的第一个子键
this 0x0012fd5c
麻烦各位大虾帮我看下,我到底写错在哪里?
作者: qq534888799 发布时间: 2011-12-01
DWORD keylen = sizeof(subkey); //设置键实际长度
改成 DWORD keylen = sizeof(subkey)+1;
改成 DWORD keylen = sizeof(subkey)+1;
作者: agoago_2009 发布时间: 2011-12-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28