while(TRUE)
{
strDeStr.Format(_T("RAS%d"), i);
HKEY hSubKey = NULL;
iRet = RegOpenKey(HKEY_LOCAL_MACHINE, pszPath, &hSubKey);
if(iRet != ERROR_SUCCESS)
{
i++;
continue;
}

if(RegSetValueEx(hKey, strDeStr, NULL, REG_SZ, (UCHAR *)pszData, sizeof(TCHAR) * (lstrlen(pszData) + 1)) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return WHITE_BLACK_ERROR_OTHERS;
} RegCloseKey(hSubKey);
break;
}我想判断某个键是否存在,iRet = RegOpenKey(HKEY_LOCAL_MACHINE, pszPath, &hSubKey);
不管键pszPath是否存在,iRet都等于0,我该怎吗办啊

解决方案 »

  1.   

    使用这个RegOpenKeyEx试试。
       HKEY hKey;
       char szProductType[BUFSIZE];
       DWORD dwBufLen=BUFSIZE;
       LONG lRet;
       
       lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
       "SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
       0, KEY_QUERY_VALUE, &hKey );
       if( lRet != ERROR_SUCCESS )
       return ;
       
       lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,
       (LPBYTE) szProductType, &dwBufLen);
       if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
       return ;
       
       RegCloseKey( hKey );
       
       if ( lstrcmpi( "WINNT", szProductType) == 0 )
       printf( "Workstation " );
       if ( lstrcmpi( "LANMANNT", szProductType) == 0 )
       printf( "Server " );
       if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
       printf( "Advanced Server " );
      

  2.   

    RegQueryValueEx
    用这个来判断返回值