is a 32-bit app). The relevant code from BBC2APK is below; perhaps somebody with a better understanding than I have can advise:
Code: Select all
JavaHome$ = ""
REM Find 32-bit Java in preference to 64-bit (Java install defaults to 32-bit)
REPEAT
SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\JRE", \
\ 0, KEY_READ, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\JRE", \
\ 0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\Java Runtime Environment", \
\ 0, KEY_READ, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\Java Runtime Environment", \
\ 0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\JRE", \
\ 0, KEY_READ, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\JRE", \
\ 0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\Java Runtime Environment", \
\ 0, KEY_READ, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\Java Runtime Environment", \
\ 0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
IF res% = 0 THEN EXIT REPEAT
UNTIL TRUE
REM Find Java home directory:
IF res% = 0 THEN
DIM subkey{name&(255)}
cchName% = DIM(subkey{})
index% = 0
REPEAT
SYS "RegEnumKeyEx", key%, index%, subkey{}, ^cchName%, FALSE, FALSE, FALSE, FALSE TO res%
index% += 1
UNTIL VAL(subkey.name&()) >= 1.8 OR res%
IF res% = 0 THEN
SYS "RegOpenKeyEx", key%, subkey.name&(), 0, KEY_READ OR KEY_WOW64_64KEY, ^subkey% TO res%
IF res% SYS "RegOpenKeyEx", key%, subkey.name&(), 0, KEY_READ, ^subkey% TO res%
IF res% = 0 THEN
DIM keyval{string&(255)}
cbData% = DIM(keyval{})
SYS "RegQueryValueEx", subkey%, "JavaHome", FALSE, FALSE, keyval{}, ^cbData% TO res%
IF res% = 0 JavaHome$ = keyval.string&()
SYS "RegCloseKey", subkey%
ENDIF
ENDIF
SYS "RegCloseKey", key%
ENDIF
REM Abort if Java not installed:
IF JavaHome$ = "" THEN
SYS "MessageBox", !Form%, "This program requires Java™" + CHR$13 + \
\ "v1.8 or later to be installed.", "BBC2APK", MB_ICONWARNING
PROCcleanup
QUIT
ENDIF