These links show you most things you will need to know.
Here is the way to read it from 32 or 64 bit. (http://msdn.microsoft.com/en-us/library/aa384129(VS.85).aspx)
32-bit and 64-bit Application Data in the Registry (http://msdn.microsoft.com/en-us/library/ms724072%28VS.85%29.aspx)
Registry Keys Affected by WOW64 (http://msdn.microsoft.com/en-us/library/aa384253(VS.85).aspx)
Here is another hint with code, while this is not in PowerBasic. (http://community.flexerasoftware.com/archive/index.php?t-160995.html)
Here is an Code-Example in Powerbasic, how to read the 64bit Registry from WOW64 (32 bit PB Program).
FUNCTION X_FJ(BYVAL T01 AS STRING,BYREF T02 AS STRING,BYREF T03 AS DWORD) AS LONG
REGISTER T04 AS DWORD
LOCAL T09 AS STRING
T04=1:T01=TRIM$(T01,ANY" []\")
T09=UCASE$(EXTRACT$(T01,"\")):T02=REMAIN$(T01,"\")
SELECT CASE AS CONST$ T09
CASE "HKEY_LOCAL_MACHINE":T03=%HKLM
CASE "HKEY_CURRENT_USER":T03=%HKCU
CASE "HKEY_CLASSES_ROOT":T03=%HKCR
CASE "HKEY_USERS":T03=%HKU
CASE "HKEY_PERFORMANCE_DATA":T03=%HKEY_PERFORMANCE_DATA
CASE "HKEY_CURRENT_CONFIG":T03=%HKCC
CASE "HKEY_DYN_DATA":T03=%HKDD
CASE "HKEY_PERFORMANCE_NLSTEXT":T03=%HKEY_PERFORMANCE_NLSTEXT
CASE "HKEY_PERFORMANCE_TEXT":T03=%HKEY_PERFORMANCE_TEXT
CASE ELSE
T03=%HKLM:T04=0
END SELECT
enx:
FUNCTION=T04
END FUNCTION
' T01 - (in) String "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows" - wie aus Regedit
' T02 - (in) String "Uninstall"
' T03 - (out) Dword Type
' T04 - (out) String Value
FUNCTION X_FI64(BYVAL T01 AS STRING,BYVAL T02 AS STRING,BYREF T03 AS DWORD,BYREF T04 AS STRING) AS LONG
LOCAL T05 AS ASCIIZ*%X_FI64_MAX
LOCAL T06,T07,T08 AS DWORD,T09 AS STRING
LOCAL hKey as DWORD
T06=%X_FI64_MAX:X_FJ(T01,T09,T07)
IF RegOpenKeyEx(T07,BYVAL STRPTR(T09), 0, %KEY_READ [b]OR %KEY_WOW64_64KEY[/b], hKey) <> %ERROR_SUCCESS THEN T08=0:goto enx
T08=RegQueryValueEx(hKey,BYVAL STRPTR(T02),0,%RRF_RT_ANY,T05,T06)
IF (T08=%ERROR_SUCCESS) THEN T04=T05 ELSE T04="":T03=0
enx:
FUNCTION=T08
END FUNCTION