如何防止在Windows的system32中安装java.exe?

有没有办法阻止Java安装例程(例如jdk-7u1-windows-i586.exe )将java.exe复制到C:\Windows\system32目录中?

我必须在客户端的笔记本电脑上安装我的软件,我不想破坏已经安装在机器上的其他Java应用程序。 换句话说,我想安装一个只用于我的软件的私人JRE

到目前为止,我已经从我的电脑上将一个已经安装好的JRE复制到了客户机器上。

我昨天发现, Windows上的Java版本存在问题 ,因为你知道现在保持最新的Java是至关重要的,特别是位于Windows系统32或syswow64文件夹中的Internet Explorer使用的JRE。

您可以在C:驱动器中执行对java的搜索,并查看它找到的各种可执行文件,以确定这种情况是否适用于特定的系统。

在做了一些研究之后,我发现当Java更新器运行时,它只会更新安装在JAVA主目录中的文件,通常位于程序文件中,但不会更新位于Windows系统文件夹中的文件 因此,由于系统文件夹位于默认系统PATH中,Internet Explorer的使用继续使用旧版本的JAVA文件(java.exe,javaw.exe,javaws.exe)

解决方法使用控制面板卸载程序功能卸载java下载最新版本并重新安装

干杯! 费尔南多

我最近升级到Java 8,发现这个问题,因为在system32下的Java版本仍然是Java 7.它停止你甚至运行版本,因为它抱怨的注册表项

 U:\>java -version Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.7' is required. Error: could not find java.dll Error: Could not find Java SE Runtime Environment. 

做了以下事情,指出我的罪魁祸首:

 U:\>where java C:\Windows\System32\java.exe C:\Program Files\Java\jdk1.8.0_45\bin\java.exe 

我解决了这个问题,只需删除system32下的java! 我不确定这会有什么后果。

您可以提供您想要在您的软件上使用的JRE,并且:

  • 在运行应用程序之前设置JAVA_HOME变量
  • 指向正确的java.exe文件(例如..\jre1.5.0_22\bin\java <your_java_main>

例如,这可以在* .bat文件中完成。

在运行你创建的* .bat文件之后,所有其他的Java版本都将被忽略,并且在那台电脑上安装或将要安装哪些版本并不重要。

我想尝试的一种方法是创建一个名为java.exe的只写空文件到System32文件夹中。

我发现最新的JDK仍然不能针对注册表编写正确的代码。 问题是如果一台计算机没有JRE,JDK就不能正确地在注册表中注册JRE。

对于那些安装JDK 1.7u72只要添加软件\ JavaSoft \ Java运行环境为错误信息指示。 然后添加值为1.7的CurrentVersion的字符串条目。 然后添加Software \ JavaSoft \ Java Runtime Environment \ 1.7,并将值为“C:\ Program Files \ Java \ jre7”的JavaHome字符串条目。 JRE将正常运行。 责备甲骨文,如果你使用注册表,然后写正确的代码,否则不要使用注册表!

所有你需要做的是去控制面板 – >程序卸载程序。 卸载旧的Java更新,并保持最新的Java更新和Java开发工具包更新。 您最新的Java更新和Java开发工具包更新应具有相同的编号。