我正在尝试检测是否安装了JVM以及它所在的位置,以便我可以运行java.exe
。
我设法找到的只有HKCU\Software\JavaSoft\Java Runtime Environment\<ver>
。假设它安装在%PROGRAMFILES%\Java\jre<ver>
?
我正在尝试在C#中执行此操作,但我认为答案与语言无关,因此我们非常感谢您的回答。
编辑:好的傻我,我发现How to detect whether java runtime is installed or not on a computer using c#指向HKLM\Software\JavaSoft\Java Runtime Environment\CurrentVersion
与HKLM\Software\JavaSoft\Java Runtime Environment\<ver>\JavaHome
合作的HKLM\Software\Wow6432Node\JavaSoft\Java Runtime Environment
。我设法在{{1}}下面找到了这些。有没有办法检测我应该检查哪一个而不试图嗅探CPU类型?
答案 0 :(得分:4)
我将把我的帽子扔进戒指中,但最后使用的代码是:
string javaDirectory = null;
// Native registry key - 32b on 32b or 64b on 64b
// Fall back on 32b Java on Win64 if available
RegistryKey javaKey =
Registry.LocalMachine.OpenSubKey("SOFTWARE\\Javasoft\\Java Runtime Environment") ??
Registry.LocalMachine.OpenSubKey("SOFTWARE\\Wow6432Node\\Javasoft\\Java Runtime Environment");
if (javaKey != null)
{
string javaVersion = javaKey.GetValue("CurrentVersion").ToString();
try
{
javaDirectory = javaKey.OpenSubKey(javaVersion).GetValue("JavaHome").ToString();
} catch(NullReferenceException)
{ /* Ignore null deref, means we can't get a directory */ }
}
if (javaDirectory == null)
{
// deal with a lack of Java here.
}
答案 1 :(得分:3)
Windows系统上正确安装的JVM(很可能......)会响应命令shell命令:
java -version
这不会返回路径,但请尝试
java -verbose -version
(至少)其中一行将包含子串rt.jar
,该行包含“活动”java虚拟机的路径。
答案 2 :(得分:0)
JRE不在c:\ windows中安装java.exe吗?
答案 3 :(得分:-1)
您可以尝试获取“* JAVA_HOME *”环境变量。
这可能会有所帮助。
修改强>
更好的想法是“ CLASSPATH ”变量。
------- start --------
C:\Documents and Settings\david>set
ALLUSERSPROFILE=...
APPDATA=...
CLASSPATH=.;C:\Archivos de programa\Java\jre6\lib\ext\QTJava.zip
CommonProgramFiles=...
...
----- end ----