有两种Java运行环境(JRE),公有JRE (public JRE)与私有JRE(private JRE)。JDK安装程序会安装私有JRE和一个可选的公有JRE。私有JRE完全包含在JDK的安装路径下,仅对JDK可见,为JDK所用。公有JRE为系统中所有的Java程序共享,具有独立的安装程序。与私有JRE不同,公有JRE的安装程序会对系统做一些修改来与OS和浏览器建立更密切的关系,主要有以下几个方面:
控制面板中的添加/删除程序列表就会出现公有JRE
控制面板中安装一个Java的控制面板项,可用它来设置一些与公有JRE相关的参数
在%SystemRoot%/system32下会出现java.exe,javaw.exe, javaws.exe
注册表做必要的添加或调整以将公有JRE注册到系统中。
公有JRE的卸载程序会做相应的清除工作来恢复一个干净的操作环境。
由于种种原因,公有JRE卸载失败,或者有时重装JRE也不能解决问题,为了恢复以前的环境,有时需要手工将安装程序所做的修改undo回去,这时我们就需要了解安装程序对注册表做了哪些修改。
注意:
1. 在对注册表做任何修改之前备份注册表!误操作可能导致你的系统无法启动!
2. 以下是实现细节, 会随时改变. 所以仅供参考.以下描述基于J2SE 5.0 以上或Java SE 6 :
1.卸载程序
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/
{3248F0A8-6813-11D6-A77B-
00B0D0MAJORVERSIONMINORVERSIONMICROVERSIONCOMPUPDATEVERSION}
MAJORVERSION: JRE的主版本号
MINORVERSION:JRE的次版本号
MICROVERSION:JRE的微版本号COMPUPDATEVERSION: JRE Update版本号*10
例如:Java SE 6的版本为1.6.0, 它的键值为:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/
{3248F0A8-6813-11D6-A77B-00B0D0160000}
J2SE 5 Update 10的版本为1.5.0_10, 它的键值为:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/
{3248F0A8-6813-11D6-A77B-00B0D0150100}
2. JVM
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment
这里列出了系统安装的所有的JRE.
3. 浏览器中Applet运行环境(Java Plug-In)版本列表
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in
4. Java Web Start版本列表
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Web Start
5. Java自动更新
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Update
在控制面板中对Java Update所做的设置就存于此处。
6. Java Preferences API
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Prefs
7. 用于探测系统上所安装的Java Web Start的组件CLSID和ProgID
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/
{5852F5ED-8BF4-11D4-A245-0080C6F74284}
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/JavaWebStart*
8. IE中的支持组件
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/
{8AD9C840-044E-11D1-B3E9-00805F499D93}
9. IE中对用来加载Applet的支持 HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/
{CAFEEFAC-*-*-*-*}
10. 从网上用于自动下载JRE的ActiveX的CLSID
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Code Store Database/Distribution Units/
{8AD9C840-044E-11D1-B3E9-00805F499D93}
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Code Store Database/Distribution Units/
{CAFEEFAC-*-*-*-*}
11. IE 选项中SUN Java
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/AdvancedOptions/JAVA_SUN
12. IE的Java Console菜单
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/Extensions/
{08B0E5C0-4FCB-11CF-AAA5-00401C608501}
13. 与IE7 ActiveX Opt-In相关的pre-approved表
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Ext/
PreApproved/
{8AD9C840-044E-11D1-B3E9-00805F499D93}
14. Microsoft的JVM
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/
{08B0E5C0-4FCB-11CF-AAA5-00401C608500} HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/
{08B0E5C0-4FCB-11CF-AAA5-00401C608501}
注意第2个键中的TreatAs, 熟悉COM的人都应知道它的含义. 这个TreatAs与Sun JRE 有关
15. 运行*.jar
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/jarfile
16. 运行*.jnlp
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/JNLPFile
17. Java Web Start 的 App Path,方便javaws寻找它的DLLs
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/
App Paths/javaws.exe
18. Java Plug-In ProgIDs
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/JavaPlugin*
以上是HKLM中的东东, HKCU中还有一些, 以后再说吧. 要干净清除JRE, 有时还要处理HKCU.