gpt4 book ai didi

java - 在 Windows 7 注册表中查找 Java CurrentVersion

转载 作者:可可西里 更新时间:2023-11-01 11:18:19 26 4
gpt4 key购买 nike

我支持旧的 Java 客户端应用程序,它在 Windows XP 上运行良好,但在 Windows 7 32 位上运行不佳。问题出在用于启动应用程序的 BAT 文件中。 BAT 文件包含查询注册表以获取 Java CurrentVersion 的代码,然后使用该值来确定用户计算机上该 Java 版本的路径。这是必需的,以便在启动 Java 客户端应用程序时将 rt.jar 包含在 CLASSPATH 中。以下代码在 Windows XP 上运行良好,但在 Windows 7 上返回:

“找不到 HKLM\SOFTWARE\JavaSoft\Java Runtime Environment”\CurrentVersion。

:find_java
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set VALUE_NAME=CurrentVersion

::
:: get the current version
::
FOR /F "usebackq skip=4 tokens=3" %%A IN (`REG QUERY "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" /v CurrentVersion 2^>nul`) DO (
set ValueValue=%%A
)

if defined ValueValue (

@echo the current Java runtime is %ValueValue%
) else (
@echo %KEY_NAME%\%VALUE_NAME% not found.
goto return
)

set JAVA_CURRENT="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\%ValueValue%"
set JAVA_HOME=JavaHome

::
:: get the javahome
::
FOR /F "usebackq skip=4 tokens=3,4" %%A IN (`REG QUERY %JAVA_CURRENT% /v %JAVA_HOME% 2^>nul`) DO (
set JAVA_PATH=%%A %%B
)
set JAVA_PATH=%JAVA_PATH:Program Files=Progra~1%
echo using %JAVA_PATH%
set JAVA_HOME=%JAVA_PATH%
echo.
:return
goto start

当涉及到复杂的 DOS 命令编程时,我并不精通。关于如何更新此代码以使其在 Windows 7(32 位)下运行的任何线索?

最佳答案

也许这会有所帮助

@echo off 
setlocal enableextensions disabledelayedexpansion

:: possible locations under HKLM\SOFTWARE of JavaSoft registry data
set "javaNativeVersion="
set "java32ON64=Wow6432Node\"

:: for variables
:: %%k = HKLM\SOFTWARE subkeys where to search for JavaSoft key
:: %%j = full path of "Java Runtime Environment" key under %%k
:: %%v = current java version
:: %%e = path to java

set "javaDir="
set "javaVersion="
for %%k in ( "%javaNativeVersion%" "%java32ON64%") do if not defined javaDir (
for %%j in (
"HKLM\SOFTWARE\%%~kJavaSoft\Java Runtime Environment"
) do for /f "tokens=3" %%v in (
'reg query "%%~j" /v "CurrentVersion" 2^>nul ^| find /i "CurrentVersion"'
) do for /f "tokens=2,*" %%d in (
'reg query "%%~j\%%v" /v "JavaHome" 2^>nul ^| find /i "JavaHome"'
) do ( set "javaDir=%%~e" & set "javaVersion=%%v" )
)

if not defined javaDir (
echo Java not found
) else (
echo JAVA_HOME="%javaDir%"
echo JAVA_VERSION="%javaVersion%"
)

endlocal

关于java - 在 Windows 7 注册表中查找 Java CurrentVersion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com