注册表中明明有一个字段值,但是RegEnumValue 没有检测出来,直接返回ERROR_NO_MORE_ITEMS,返回值是259,为什么!!!!

renshinn 2014-12-10 08:00:21
代码如下:


int ReadRegisteTable(int rootflag, int pathflag, char* destname) { // 读取注册表有创建

int i;
HKEY hrootkey; // 根键值
LPCTSTR lpSubKey; // 子键值路径
HKEY hKey; // 打开注册表项保存信息
BOOL bResult = TRUE;
DWORD lResult;

if (rootflag == 1)
hrootkey = HKEY_LOCAL_MACHINE;
else if (rootflag == 2)
hrootkey = HKEY_CURRENT_USER;
if (pathflag == 1)
lpSubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\";
else if (pathflag == 2)
lpSubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\";


lResult = RegOpenKeyEx(hrootkey, lpSubKey, 0, KEY_WOW64_32KEY|KEY_QUERY_VALUE | KEY_READ ,
&hKey);



if (lResult != ERROR_SUCCESS) { // 打开键值失败
return -1;
}

// 開始枚舉鍵值
for (i = 0; ; i++)
{
fout << "in xunhuan i = " << i << "\n";
TCHAR szValueName[_MAX_PATH + 1];
DWORD dwValueName = sizeof(szValueName);
TCHAR value[_MAX_PATH + 1];
DWORD valuelong = sizeof(value);
DWORD dwValueType;


lResult = RegEnumValue(hKey, i, szValueName, &dwValueName, 0,
&dwValueType, value, &valuelong);

// 259并非错误

// If there are no more values available,
// the function returns ERROR_NO_MORE_ITEMS.


if (lResult != ERROR_SUCCESS)
{
if (lResult != ERROR_NO_MORE_ITEMS)
{

bResult = FALSE;
}
break;
}
String tempstrname(szValueName);
String tempstrvalue(value);


if (strstr(value, ".exe") != NULL)
{
StrCopy(destname, value);
break; // 找到推出循环
}

}

RegCloseKey(hKey);

return 0; // 成功返回
}


RegOpenKeyEx打开注册表是调用成功的,但是注册表枚举的时候直接就是返回259,代表的意思就是ERROR_NO_MORE_ITEMS,RegEnumValue也没错,但是我看了注册表里面明显是一项字段值的.为什么会这样?求大神指教..测试环境是xp系统...求大婶了..急急急!!!!!!!
...全文
1057 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝龙哥 2015-08-31
  • 打赏
  • 举报
回复
楼主的程序没怎么看,不知道是否有问题
宝龙哥 2015-08-31
  • 打赏
  • 举报
回复
注册表里面有一种 REG_EXPAND_SZ ,是属于长度可变的数据串。该数据类型包含在程序或服务使用该数据时确定的变量。 REG_SZ 和 REG_EXPAND_SZ 的区别是: REG_SZ 类型的键值中存在的可扩展占位符 %xxx% 不会被系统解释,会真实的返回; REG_EXPAND_SZ 类型的键值中存在的 %xxx% 的部分会被系统解释,变成实际代表的值,比如max_path有可能被解释成260返回。 也有可能是二进制数据,存到类似char中后其中的/0后面的数据被忽略了
Faceword 2015-08-26
  • 打赏
  • 举报
回复
参数类型,赋初值
renshinn 2014-12-11
  • 打赏
  • 举报
回复
为什么没人...
renshinn 2014-12-10
  • 打赏
  • 举报
回复
自己顶
renshinn 2014-12-10
  • 打赏
  • 举报
回复
大婶求关注...上面急着要...

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧