首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

注册表看似简单的有关问题,哪位高手能读取这个键值

2012-02-07 
注册表看似简单的问题,谁能读取这个键值。在网上查找了一下,Windows最近运行过的程序记录存贮在“HKEY_CURRE

注册表看似简单的问题,谁能读取这个键值。
在网上查找了一下,Windows最近运行过的程序记录存贮在“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU”键值里面,如从任务管理器中输入:“Regedit”或“cmd”。。。在这个键值下就会有名为“MRUList”、“a”、“b”。。。的值。 
  现在先用函数读取“MRUList”: 
HKEY hKey = NULL; 
TCHAR szRList[256] = { '\0 ' }; 
DWORD dwRet; 
TCHAR szRunBuf[256] = { '\0 ' }; 
::RegOpenKeyEx(HKEY_CURRENT_USER,  
TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU\\"),  
0, KEY_READ, &hKey); 

::RegQueryValueEx(hKey, TEXT("MRUList"), NULL, NULL, (BYTE*)szRList, &dwRet); // 成功读取 

::RegQueryValueEx(hKey, TEXT("b"), NULL, NULL, (BYTE*)szRunBuf, &dwRet); // 读取失败,为什么会失败!!!! 

::RegCloseKey(hKey); 

哪为高手能解释一下呢?读其他键值并不存在这种情况。

[解决办法]
读取之前要正确设置dwRet这个参数大小。
[解决办法]
你的代码太多漏洞了,你试一下把这句 DWORD dwRet; 初始化一下,改为 DWORD dwRet = 0; 你看看原来读取成功的现在还可以成功不?

"读取之前要正确设置dwRet这个参数大小" 这个回答绝对正确。

“有更多数据可用”证明你的dwRet长度分配不够。

热点排行