部分代码如下
if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,(unsigned char *)time,&dwLength)==ERROR_SUCCESS)   //1
 {
   .......  
 }
lpValueName=“ddd”;
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,(unsigned char *)time,&dwLength)==ERROR_SUCCESS)//2
 {
   .......  
 }
}
两次查询的lpValueName不同。 第一次查询能成功,而第二次就出错了,分开测试都是通过,正确的?
请高手指教

解决方案 »

  1.   

    LPBYTE time1 = new BYTE[100];
    LPBYTE time2 = new BYTE[100];if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time1 ,&dwLength)==ERROR_SUCCESS)   //1if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time2,&dwLength)==ERROR_SUCCESS)   //1delete[] time1;
    delete[] time2;
      

  2.   

    谢谢 lixiaosan!!!
    还有个问题就是昨天我也是用你的这个方法。只不过我把变量是如下声名的,就出现上述问题。
    LPBYTE time1 = new BYTE[100];
    if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
    {
    if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time1 ,&dwLength)==ERROR_SUCCESS)   
    ......}
    if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
    {
     LPBYTE time2 = new BYTE[100];//---------
    if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time2 ,&dwLength)==ERROR_SUCCESS)   
    ......}这样就不行了。
      

  3.   

    LPBYTE time1 = new BYTE[100];
    if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
    {
    if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time1 ,&dwLength)==ERROR_SUCCESS)   
    ......}RegCloseKey(hKey);if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
    {
     LPBYTE time2 = new BYTE[100];//---------
    if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time2 ,&dwLength)==ERROR_SUCCESS)   
    ......}这样就不行了。
      

  4.   

    第二次查询前,应该对变量重新初始化一下
    memset( time,0, sizeof(time));
    dwLength = 4096;
    因为第一次查询时, 这些值已经产生了变化