如何读取multi String value 的值,我的multi String value中有两行,调用RegQueryValueEx只能读到第一行的数据,打断点去看,也没有看到第二行的数据

解决方案 »

  1.   

    用Memory看,每行都是以\0结束的
    An array of null-terminated strings, terminated by two null characters.
      

  2.   

    提供给你一个读取REG_MULTI_SZ类型数据的源码    HKEY hKey;
        CHAR *pszCustomer, *pTemp;
        DWORD dwBufLen =0;
        LONG lRet;    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
            TEXT("SOFTWARE\\SomeSoft"),
                        0,
                        KEY_QUERY_VALUE,
                        &hKey) != ERROR_SUCCESS) 
    {
    return ;
    }    lRet = RegQueryValueEx(hKey,
                        TEXT("Customer"),
                        NULL,
                        NULL,
                        NULL,//(LPBYTE)pszCustomer,
                        &dwBufLen); if(lRet != ERROR_SUCCESS)
    {
    RegCloseKey(hKey);
    return;
    } pszCustomer = new CHAR[dwBufLen];
    if (pszCustomer == NULL)
    {
    RegCloseKey(hKey);
    return;
    } lRet = RegQueryValueEx(hKey,
                       TEXT("Customer"),
                       NULL,
                       NULL,
                       (LPBYTE)pszCustomer,
                       &dwBufLen);

    RegCloseKey(hKey);
    if(lRet != ERROR_SUCCESS)

    delete[] pszCustomer;
    return;
    } CString strTemp;
    CStringList cslCumtomerName;
    pTemp = pszCustomer;
    DWORD dwPos = 1;
    while (dwPos < dwBufLen )
    {
    strTemp = pTemp;
    cslCumtomerName.AddTail(strTemp);
    pTemp += strTemp.GetLength() + 1;
    dwPos += strTemp.GetLength() + 1; 
    } delete[] pszCustomer;