如何在Windows上检测已安装的Sun / Oracle JRE?
我试着用谷歌搜索答案,但我发现的只是如何从浏览器中检测Java的技巧或者只是启动Java的非常通用的方法,看它是否运行,这在我的应用程序中引入了可能很长的延迟。 (第一次在我的机器上启动时~~两秒钟)
如果以下限制适用,我希望有更快的方法:
- 只有Sun / Oracle JRE或JDK
- 只有1.6或更高
- 只有Windows平台
- 不是来自浏览器,而是来自普通的旧Win32可执行文件
此检测不适用于公共应用程序,仅适用于Windows平台上的内部使用。
是否有我可以阅读的注册表路径或我可以解析的一些配置文件?
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
Windows>开始> cmd>
C:> for %i in (java.exe) do @echo. %~$PATH:i
如果安装了JRE,则会显示Path,例如: C:\Windows\System32\java.exe
注册表可能是最简单的路径 – 假设安装程序已运行。 已安装的版本可以在以下各种子项中找到:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
如果用户已手动配置其环境,则可以检查JAVA_HOME
/遍历PATH
变量并检查文件版本。 演示WSH脚本:
'file: whereJava.vbs 'usage: cscript /Nologo whereJava.vbs 'find Java 6 from registry Set objShell = CreateObject("WScript.Shell") Wscript.Echo objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\" &_ "JavaSoft\Java Runtime Environment\1.6\JavaHome") 'check file version of java.exe javaHome = objShell.Environment.item("JAVA_HOME") Set objFSO = CreateObject("Scripting.FileSystemObject") Wscript.Echo objFSO.GetFileVersion(javaHome & "\bin\java.exe")
请参阅GetFileVersionInfo和公司。 主要版本号似乎与Java版本匹配(5,6)。 没有调用JVM就可以做到有限的数量。
相反,您可以尝试在命令提示符下运行命令“java -version”。
如果JRE未正确安装但是从其他计算机复制,则实际上可能无法正常工作。 一个确定的镜头解决方法是导航到JRE安装目录“ C:\ Program Files \ Java \ ”,从命令提示符导航到bin文件夹,然后运行“ java -version ”。 输出将是安装版本,以及您正在寻找的所有相关信息。
在Windows机器上可以有任意数量的已安装JRE和JDK,但只有一个将设置HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java运行时环境。
您可能还会考虑“JAVA_HOME”和“Path”环境变量,因为它们会影响命令行java调用。