各位高手,帮我分析一下下面的代码,能够往注册表中写入数据,却都不出来,不知道在哪儿出错了,代码是直接考过来的,有些乱,望见谅!
BOOL CLoveProtectDlg::OperateRegKey(int Operate_ID)
{
HKEY hkey=NULL;
HKEY hLoveKey=NULL;

DWORD dwType;
DWORD dwValue;
DWORD dwLen=sizeof(DWORD); if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,_T("software"),0,
                  REG_NONE,REG_OPTION_NON_VOLATILE,KEY_READ|KEY_WRITE,
                       NULL,&hkey,&dwLen)
==ERROR_SUCCESS)
{
   if(RegCreateKeyEx(hkey,_T("LoveProtect"),0,
              REG_NONE,REG_OPTION_NON_VOLATILE,KEY_READ|KEY_WRITE,NULL,
                             &hLoveKey,&dwLen)==ERROR_SUCCESS)
{
   if(Operate_ID==1)
    {
if(LONG lResult=RegQueryValueEx        (hLoveKey,"LoveProtectTime",
NULL,&dwType,(LPBYTE)&dwValue,&dwLen)==ERROR_SUCCESS)  //读取注册表
{

m_nTime=(int)dwValue;
}
else
{
m_nTime=0;
}
}
else
{
BYTE nKeyValue=m_nTime;
if(RegSetValueEx(hLoveKey,"LoveProtectTime",NULL,REG_DWORD,
(LPBYTE)&m_nTime,sizeof(m_nTime)) !=ERROR_SUCCESS) //写入注册表
{
AfxMessageBox("fail");
}
}
}
}
if(hLoveKey !=NULL)
RegCloseKey(hLoveKey);
if(hkey !=NULL)
RegCloseKey(hkey);

return true;
}

解决方案 »

  1.   

    就是在我注释的读取注册表那个函数出错,前面几个打开健的函数返回均正确,lResult返回的是0,但我换了个办法试了一下,我把RegCreateKeyEx换成RegOpenKeyEx就能读取了,真不知这是为什么?照MSDN上说的,RegCreateKeyEx创建健的时候,如果该键已存在的话,就只是打开该健而已,起到的作用就是RegOpenKeyEx