1

最近,我正在对我们的一项 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 VM,它们以类似的方式设置了组策略和终端服务来进行测试。其他两个 VM 的行为完全相同,这使得除了 Install 用户之外的任何用户都无法使用 Java RE 1.7.0。

在测试时,我继续执行以下操作:

  1. 已卸载 Java RE 1.7.0
  2. 重新启动
  3. 在管理员帐户下使用相同的添加/删除程序方法安装 Java RE 1.6 Update 33
  4. 重新启动
  5. RDP 以标准用户身份进入机器并测试了 Java RE,它运行良好

我认为 Java RE 1.7.0 中的某些内容没有正确安装 Windows Server 2003 下的终端服务。但是,我发现网上没有其他人提到这一点真的很奇怪。

4

1 回答 1

1

在使用 Sysinternals Procmon.exe 进行大量跟踪后,我发现 Installed Console 用户和 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),然后导入密钥。这解决了ALL USERS的 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"
于 2012-07-17T21:21:58.200 回答