unhandled exception 0xc0000005 错误

noahgenius 2008-04-29 12:01:50
有一段代码是用来检测flash player版本号的:

BOOL checkFlashActivexVersion()
{
HKEY hkey = NULL;
// if register do not have flash activex key
if (isKeyExists(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Macromedia\\FlashPlayer"), &hkey))
{
BYTE keyvalue;
DWORD valuelength;
// get "CurrentVersion" value
if(RegQueryValueEx(hkey, "CurrentVersion", NULL, NULL, &keyvalue, &valuelength) == ERROR_SUCCESS)
{
//
char *pfVersion = (char *)&keyvalue;
int pv = (int)*pfVersion;
//pfVersion++;

if (pv >= '9')
{
return TRUE;
}
}
}

return FALSE;
}


运行到return TRUE;的地方是出现unhandled exception 0xc0000005 错误。
请问这是为什么?谢谢。
...全文
2687 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天舞 2008-04-29
  • 打赏
  • 举报
回复
多调试几下就会找到问题了.
ringphone 2008-04-29
  • 打赏
  • 举报
回复
BYTE keyvalue;
char *pfVersion = (char *)&keyvalue;
int pv = (int)*pfVersion;
----------
BYTE转换成int,越界

RegQueryValueEx(hkey, "CurrentVersion", NULL, NULL, keyvalue, &valuelength)
----------
valuelength需要先赋值指定keyvalue大小,你未赋值,如果注册表键值大于1字节,同样越界溢出。


zgl7903 2008-04-29
  • 打赏
  • 举报
回复

BOOL checkFlashActivexVersion()
{
BOOL check_ret = false;

HKEY hkey = NULL;
// if register do not have flash activex key
if(RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Macromedia\\FlashPlayer"), &hkey) == ERROR_SUCCESS)
{
BYTE keyvalue[128];
DWORD valuelength = sizeof(keyvalue);
// get "CurrentVersion" value
if(RegQueryValueEx(hkey, "CurrentVersion", NULL, NULL, keyvalue, &valuelength) == ERROR_SUCCESS)
{
char *pfVersion = (char *)&keyvalue;
int pv = (int)*pfVersion;
//pfVersion++;

if (pv >= '9')
{
check_ret = TRUE;
}
}
RegCloseKey(hkey);
}

return (check_ret);
}
Torch009 2008-04-29
  • 打赏
  • 举报
回复
设断点跟下就知道了。
菜牛 2008-04-29
  • 打赏
  • 举报
回复
valuelength没有初始化,而你要读取的到底是多大的数据?用一个BYTE能放下吗?后面把一个字节数据转成一个整数再和一个字节比较,也让人看不明白,方法也不对。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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