for (int i = 0 ; i<50 ; i++ )
{::RegOpenKeyEx(HKEY_LOCAL_MACHINE,strInto , NULL ,KEY_EXECUTE , &m_Path);
 ::RegEnumValue(m_Path ,i , (LPTSTR)chData ,&dwSize,NULL,NULL,NULL,NULL) ;
::RegQueryValueEx(m_Path , chData , NULL , &theDWRegType , (LPBYTE)Value , &dwSize)}
 其中 二行的 chData 能直接作为变量 , 放到第三行么!!!

解决方案 »

  1.   

    DWORD theDWRegType = REG_SZ | REG_EXPAND_SZ;
    #define DATASIZE 1688 
    void CAUTODlg::OnOpen()

      char chData[DATASIZE]  ; 
      DWORD dwSize = DATASIZE;
      char Value[DATASIZE] ;
      strInto = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" ;   
      
       CListBox *lbx ; 
       lbx = (CListBox*)GetDlgItem(IDC_LIST2) ;
       lbx->ResetContent() ;  
       for (int i = 0 ; i<50 ; i++ ) 
       {::RegOpenKeyEx(HKEY_LOCAL_MACHINE,strInto , NULL ,KEY_EXECUTE , &m_Path);
         dwSize = DATASIZE ; 
         long lRet = ::RegEnumValue(m_Path ,i , (LPTSTR)chData , &dwSize,NULL,NULL,NULL,NULL) ;   
       if ( lRet ==  ERROR_SUCCESS ) 

    if (::RegQueryValueEx(m_Path , chData , NULL , &theDWRegType , (LPBYTE)Value , &dwSize)!=ERROR_SUCCESS)
         MessageBox("错误!") ; 
                   
    else 
    {SetDlgItemText(IDC_EDIT1 , Value ) ; 
                       ::RegCloseKey(m_Path) ;  
      OnAdd();
    }
       
    }   
        else 
     break ; 
       }}void CAUTODlg::OnAdd() 
    {
      CString str ; 
      GetDlgItemText(IDC_EDIT1 ,str ) ; 
          CListBox *lbx ; 
      lbx = (CListBox*)GetDlgItem(IDC_LIST2) ; 
      lbx->AddString(str) ;  
      
      SetDlgItemText( IDC_EDIT1 ,   "") ; 

    }
    那我 ::RegQueryValueEx  那一行怎么不能成功打开!!????