Windows Server 2003(32位)终端服务上的Java RE 1.7.0的问题?

时间:2012-07-17 13:59:21

标签: java windows terminal-services

最近,我在我们的一个Windows 2003终端服务上执行更新。在更新期间,我卸载了所有以前重新启动的Java RE版本,然后使用“添加/删除程序”(对于终端服务安装模式)在管理员登录下安装了Java RE 1.7.0。安装1.7.0后,即使在“高级Internet Explorer 8 Internet选项”页面中选中“使用JRE 1.7.0_5(需要重新启动)”,也没有任何RDP客户端能够运行Java。

即使具有不是用于安装的帐户的管理员权限的帐户也无法使用Java RE 1.7.0。

使用(设置为“受信任的站点”进行测试以确保降低安全设置):

为了对此进行测试,我继续开发了一些具有组策略和功能的Windows 2003虚拟机。终端服务设置以类似的方式进行测试。另外两个虚拟机的行为完全相同,使得除安装用户之外的任何用户都无法使用Java RE 1.7.0。

在测试时我继续做了以下事情:

  1. 已卸载Java RE 1.7.0
  2. 的重新开始
  3. 使用管理员帐户下的相同“添加/删除程序”方法安装Java RE 1.6 Update 33
  4. 的重新开始
  5. 作为标准用户将RDP作为标准用户进行测试并且测试了Java RE并且它完美地运行
  6. 我认为Java RE 1.7.0中的某些东西在Windows Server 2003下没有正确安装终端服务。但是,我觉得很奇怪,我还没有发现任何人在网上提到这个

1 个答案:

答案 0 :(得分:1)

使用Sysinternals Procmon.exe进行大量跟踪后,我发现安装的控制台用户和RDP用户之间的注册表项存在特定差异。

HKCU\Software\Classes\CLSID\{CAFEEFAC-0017-0000-0005-ABCDEFFEDCBB}\ HKCU\Software\Classes\CLSID\{CAFEEFAC-0017-0000-0005-ABCDEFFEDCBB}\InprocServer32

这些密钥存在于正常运行的用户但RDP用户帐户丢失了。所以我首先尝试将此密钥导入RDP用户,这适用于特定的用户帐户。但是,我希望所有用户都能运行,因此我将密钥修改为HKLM(HKEY_LOCAL_MACHINE),然后导入密钥。这解决了所有用户的Java RE 1.7.0问题。

在我的情况下,Java RE安装在D:\ Program Files \ Java \ Jre7 \中,您必须根据安装路径修改注册表项。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{CAFEEFAC-0017-0000-0005-ABCDEFFEDCBB}]

@="Java Plug-in 1.7.0_05"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{CAFEEFAC-0017-0000-0005-ABCDEFFEDCBB}\InprocServer32]

@="D:\\Program Files\\Java\\jre7\\bin\\jp2iexp.dll"

"ThreadingModel"="Apartment"