• 打造绿色JRE


    经常遇到这样的情况,JDK和JRE众所周知是绿色的。正如JAVA命令一般,无论JDK装在哪里,只要在正确的路径下键入JAVA,JAVAW,JAVAC一类命令都将会正确的运行。虽然JDK装在非系统盘的逻辑分区,但是每当重做系统之后,JAR文件双击打开,IE查看APPLET,JAVA WEB START的正常开启,都会失去正常功能。可以猜想到是注册表中失去了一些什么才造成了这样的状况。这篇文章主要用来告诉大家如何在重做系统后回复这些JAVA与WINDOWS的接口功能。

    A.回复IE的APPLET功能(java plugin)

    1.拷贝%JAVA_HOME%/BIN下的javacpl.cpl到%System32%目录;
    2.在注册表下建立:
    [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_10]
    "MicroVersion"="1"
    "RuntimeLib"="D:\\Software\\jdk6\\jre\\bin\\client\\jvm.dll"
    "JavaHome"="D:\\Software\\jdk6\\jre"
    [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.6.0_10]
    "UseJava2IExplorer"=dword:00000001
    "JavaHome"="D:\\Software\\jdk6\\jre"
    "HideSystemTrayIcon"=dword:00000000
    保证控制面板里的java plugin双击能够运行。
    3、注册NPJPI141_02.dll,在命令行输入 regsvr32 D:\Software\jdk6\jre\bin\NPJPI160_10.dll 保证NPJPI160_10.dll 注册成功。

    NPJPI*.dll 是一个COM组件,包含三个COM对象,分别为Java Plug-in <applet> 转向器 和相应Java Runtime Environment链接器,classid分别为8AD9C840-044E-11D1-B3E9-00805F499D93,CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA,CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB

    它同通过提供一组com接口使得ie在浏览带有applet的页面时,原来是通过微软的java虚拟机(在system32目录的一个msjava.dll文件),重新转向到sun 的jre环境。


    4.因为NPJPI141_02.dll的注册过程,在注册表的相应位置没有正确的设置(NPJPI141_02.dll在注册表的注册文件名为NPJAVA141_02.dll,这可就是最大的错误),所以最后还要手动的修改注册表。都是文件名称错误,修改NPJPI141_02.dll包含的三个com对象指向正确的文件名。简便的方法是将下边的注册表脚本中npjpi*.dll的路径改为正确的路径,然后插入注册表.下边的段落可以粘贴到记事本,然后更改扩展名为.reg,双击执行。注意修改其中路径。

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}]

    [HKEY_CLASSES_ROOT\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}\InprocServer32]
    @="D:\\Software\\jdk6\\jre\\bin\\npjpi160_10.dll"

    [HKEY_CLASSES_ROOT\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}\InprocServer32]
    @="D:\\Software\\jdk6\\jre\\bin\\npjpi160_10.dll"

    [HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}\InprocServer32]
    @="D:\\Software\\jdk6\\jre\\bin\\npjpi160_10.dll"

    [HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}]

    [HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}\InprocServer32]
    @="D:\\Software\\jdk6\\jre\\bin\\npjpi160_10.dll"

    [HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}]

    [HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}\InprocServer32]
    @="D:\\Software\\jdk6\\jre\\bin\\npjpi160_10.dll"

    [HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}\InprocServer32]
    @="D:\\Software\\jdk6\\jre\\bin\\npjpi160_10.dll"

     

    5.修改msjava.dll转向SUN 的JRE环境。可将下边内容粘贴为.reg文件双击执行。

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\CLSID\{08B0E5C0-4FCB-11CF-AAA5-00401C608501}\TreatAs]
    @="{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}"

    classid为08B0E5C0-4FCB-11CF-AAA5-00401C608501的com对象被包含在msjava.dll里。是ms java 虚拟机的一部分。

    6.最后一步可做可不做,没有的话好像也可以运行。可将下边内容粘贴为.reg文件双击执行。注意更改路径。

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{08B0E5C0-4FCB-11CF-AAA5-00401C608500}]
    "KeyFileName"="D:\\Software\\jdk6\\jre\\bin\\ActPanel.dll"

    运行控制面板里的java plugin程序,进行设定,发现ie的选项里详细设定也有了用sun 虚拟机代替ms 的虚拟机的选项。

    7.在控制面板的java plugin程序中进行设定。让IE使用SUN 的JAVA PLUGIN ,开启控制台,系统托盘JAVA图标等操作。

    OK,java plugin 安装完成。有有兴趣的朋友可以考虑根据做成WIN32程序,帮助有这种需要的人。

    我把它做成了一个批处理jdk6_reg.bat内容如下:

    @echo -------------step1----------------
    @echo 注意这里需要设置要根据情况修改为将要被注册的JDK目录
    set java_home=D:\app.java\jdk6

    copy %java_home%\jre\bin\javacpl.cpl %windir%\system32

    reg add "HKEY_USERS\S-1-5-21-1229272821-1965331169-725345543-1003\Environment" /v java_home /t reg_sz /d %java_home% /f
    reg add "HKEY_USERS\S-1-5-21-1229272821-1965331169-725345543-1003\Environment" /v path /t reg_expand_sz /d %java_home%\bin\; /f

    @echo -------------step2----------------
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_10" /v MicroVersion /t reg_dword /d 1 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_10" /v RuntimeLib /t reg_sz /d D /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_10" /v JavaHome /t reg_sz /d %java_home%\jre /f

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.6.0_10" /v UseJava2IExplorer /t reg_dword /d 00000001 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.6.0_10" /v JavaHome /t reg_sz /d %java_home%\jre /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.6.0_10" /v HideSystemTrayIcon /t reg_dword /d 00000000 /f

     

    @echo -------------step3----------------
    regsvr32 %java_home%\jre\bin\NPJPI160_10.dll /s


    @echo -------------step4----------------
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}\InprocServer32" /v @ /t reg_sz /d %java_home%\jre\bin\npjpi160_10.dll /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}\InprocServer32" /v @ /t reg_sz /d %java_home%\jre\bin\npjpi160_10.dll /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}\InprocServer32" /v @ /t reg_sz /d %java_home%\jre\bin\npjpi160_10.dll /f

    reg add "HKEY_CLASSES_ROOT\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}\InprocServer32" /v @ /t reg_sz /d %java_home%\jre\bin\npjpi160_10.dll /f
    reg add "HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}\InprocServer32" /v @ /t reg_sz /d %java_home%\jre\bin\npjpi160_10.dll /f
    reg add "HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}\InprocServer32" /v @ /t reg_sz /d %java_home%\jre\bin\npjpi160_10.dll /f


    @echo -------------step5----------------
    reg add "HKEY_CLASSES_ROOT\CLSID\{08B0E5C0-4FCB-11CF-AAA5-00401C608501}\TreatAs" /v @ /t reg_sz /d "{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}" /f

    @echo -------------step5----------------
    javacpl.cpl
    @echo -------------step finish------------
    pause

    (1.这个批处理运行之前,先要编辑JAVA_HOME为JDK6所在路径;

    2.注册完成后,弹出JAVA配置面板,把里边对IE应用JAVA插件的选项,去掉勾确认,再勾上确认。当然也可将来从控制面板进行配置。

    3.运行之后,需要注销用户再登录进去,然后再控制台输入JAVA即可发现JAVA,javac,javaw等命令已经可以使用了。)

    B.恢复jar文件的双击运行

    待续。。。

    C.恢复jnlp的WEB打开功能

    待续。。。

     

    =======================

     

    @echo 注意这里需要设置要根据情况修改为将要被注册的JDK目录
    @echo off
    setlocal EnableDelayedExpansion
    echo 当前正在运行的批处理文件所在路径:!cd!
    @echo off
    set java_home=%cd%\jdk
    echo java_home目录是:%java_home%
    copy %java_home%\jre\bin\javacpl.cpl %windir%\system32

    @echo 注意这里获取bat文件运行时目录

    @echo offsetlocal EnableDelayedExpansionecho 

    当前正在运行的批处理文件所在路径:!cd!
    @echo off
    set java_home=%cd%\jdk

    echo java_home目录是:%java_home%

    copy %java_home%\jre\bin\javacpl.cpl %windir%\system32

  • 相关阅读:
    小小的疑问和小小的想法
    为什么你的代码不能给别人看?
    linux之中对文件名和文件进行编码转换
    数据泵导入导出步骤
    杭电acm1266
    杭电acm2097
    杭电acm2019
    杭电acm1395(转自牛人代码)
    杭电acm1279
    杭电acm1412
  • 原文地址:https://www.cnblogs.com/shenhaocn/p/1707729.html
Copyright © 2020-2023  润新知