*? lRetVal, STRTRAN(ALLTRIM(sValueName),CHR(0), " " ), STRTRAN(ALLTRIM(sData), CHR(0), "") ? lRetVal, STRTRAN(ALLTRIM(sValueName),CHR(0), " " ), " " lvKeyVal = LEFT(sData, iDataSize) DO CASE CASE iCode = 1 && REG_SZ ?? LEFT(lvKeyVal, LEN(lvKeyVal)-1) CASE iCode = 3 && REG_BINARY FOR i=1 TO LEN(lvKeyVal) ?? RIGHT(TRANSFORM(ASC(SUBSTR(lvKeyVal,i,1)), "@0"),2) + " " ENDFOR CASE iCode = 4 && REG_DWORD ENDCASE lnVal = 0 FOR i=1 TO LEN(lvKeyVal) lnVal = lnVal + ASC(SUBSTR(lvKeyVal,i,1)) * (256 ^ (i-1)) ENDFOR ?? lnVal OTHERWISE ENDCASEI just put this code together so there's no guaranty that it is bug free. However it should give you some pointers.