[英]c++ registry not getting second value
为什么这不起作用? 第一个RegGetValue将正确的值放在value变量中,第二个不正确,但是如果我注释第一个RegGetValue,则第二个将工作并将正确的内容放入value2变量中。 我尝试了closind,并在第一次RegGetValue函数调用之后使用RegOpenKeyEx重新打开了注册表项,但是没有成功。 我做错了
HKEY hKey = NULL;
LSTATUS res;
res=RegOpenKeyEx(HKEY_CLASSES_ROOT, "", 0, KEY_READ|KEY_WOW64_64KEY, &hKey);
if(res!=ERROR_SUCCESS)
printf("insucces\n");
else {
char value[255], value2[255];
memset(value,0,255);
memset(value2,0,255);
DWORD BufferSize = BUFFER;
RegGetValue(hKey,"\\.jpeg","",RRF_RT_ANY,NULL,(PVOID)&value, &BufferSize);
strcat(value,"\\DefaultIcon");
RegGetValue(hKey,"jpegfile\\DefaultIcon","",RRF_RT_ANY,NULL,(PVOID)&value2, &BufferSize);
printf("succes %s\n",value2);
}
从RegGetValue手册中获取有关最后一个参数的信息;
pcbData [输入,输出,可选]
指向变量的指针,该变量指定pvData参数指向的缓冲区的大小(以字节为单位)。 函数返回时,此变量包含复制到pvData的数据大小。
换句话说,第一个调用将BufferSize
变量的内容更改为返回的第一个值的大小,并且需要在第二个调用之前将其重置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.