Merge "find_java.bat now uses env var instead of find" into studio-1.0-release
diff --git a/find_java/find_java.bat b/find_java/find_java.bat
index b0bb165..01367c1 100755
--- a/find_java/find_java.bat
+++ b/find_java/find_java.bat
@@ -22,9 +22,21 @@
rem http://technet.microsoft.com/en-us/library/bb490890.aspx
rem Query whether this system is 32-bit or 64-bit
-rem See also: http://stackoverflow.com/a/24590583/1299302
-reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" |^
-find /i "x86" > NUL && set arch_ext=32|| set arch_ext=64
+rem Note: Some users report that reg.exe is missing on their machine, so we
+rem check for that first, as we'd like to use it if we can.
+set sys_32=%SYSTEMROOT%\system32
+if exist %sys_32%\reg.exe (
+ rem This first-pass solution returns the correct architecture even if you
+ rem call this .bat file from a 32-bit process.
+ rem See also: http://stackoverflow.com/a/24590583/1299302
+ %sys_32%\reg query "HKLM\Hardware\Description\System\CentralProcessor\0"^
+ | %sys_32%\find /i "x86" > NUL && set arch_ext=32|| set arch_ext=64
+) else (
+ rem This fallback approach is simpler, but may misreport your architecture as
+ rem 32-bit if running from a 32-bit process. Still, it should serve to help
+ rem our users without reg.exe, at least.
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" (set arch_ext=32) else (set arch_ext=64)
+)
rem Check we have a valid Java.exe in the path. The return code will
rem be 0 if the command worked or 1 if the exec failed (program not found).