RegQueryValueEx不会获得多个REG_BINARY数据

时间:2017-06-08 03:03:39

标签: c++ windows-7 codeblocks

我在注册表中有一个包含3个REG_BINARY值的键。 我可以完美地阅读第一个,但是当我尝试获取第二个和第三个值时,即使数据只有10个BYTES,我也会收到ERROR_MORE_DATA错误。我没有获得该值,但我得到了它的良好数据长度。

HKEY hKey;
long nError;
DWORD sizeData;
BYTE Data[256];

nError = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\MyProg\\Test01", 
NULL,KEY_ALL_ACCESS, &hKey  );
if(!nError)
{ nError = RegQueryValueEx(hKey, "1", NULL, NULL, (LPBYTE)&Data, 
   &sizeData); // This one does OK

  nError = RegQueryValueEx(hKey, "2", NULL, NULL, (LPBYTE)&Data, 
   &sizeData); // Here I get the good value for sizeData but ERROR_MORE_DATA

  nError = RegQueryValueEx(hKey, "3", NULL, NULL, (LPBYTE)Data, 
   &sizeData); // Same ERROR here too
}
RegCloseKey(hKey);

注意:在注册表中我有这些键:

1    REG_BINARY    c5 31 56 f4 d3 22 17 88 64 e3
2    REG_BINARY    45 48 47 c5 d2 21 77
3    REG_BINARY    dd ef 45 2e fc 10

我做错了什么?

我删除了nError的测试以减少代码的大小,但在我的程序中,我得到nError = ERROR_MORE_DATA

0 个答案:

没有答案