Проблемы с Java RE 1.7.0 в Windows Server 2003 (32-разрядных) служб терминалов?
Недавно я выполнял обновления для одной из наших служб терминалов Windows 2003. Во время обновлений я удалил все предыдущие версии Java RE, перезапустил, а затем установил Java RE 1.7.0 под учетной записью администратора, используя Установка и удаление программ (для режима установки служб терминалов). После установки 1.7.0 ни один из клиентов RDP не может запускать Java, даже если на странице "Дополнительные параметры обозревателя Internet Explorer 8" установлен флажок "Использовать JRE 1.7.0_5 для (требуется перезапуск)".
Даже учетные записи с правами администратора, которые не являются учетной записью, используемой для установки, не могут использовать Java RE 1.7.0.
Протестировано с использованием (установите "Надежные сайты", чтобы убедиться, что настройки безопасности снижены):
Чтобы проверить это, я запустил несколько моих виртуальных машин с Windows 2003, на которых аналогичным образом настроены групповые политики и службы терминалов для тестирования. Две другие виртуальные машины вели себя точно так же, в результате чего любой пользователь, кроме пользователя Install, не мог использовать Java RE 1.7.0.
Во время тестирования я пошел дальше и сделал следующее:
- Деинсталлированная Java RE 1.7.0
- Restarted
- Установленное Java RE 1.6 Update 33 с использованием того же метода "Установка и удаление программ" под учетной записью администратора
- Restarted
- RDP в машину как обычный пользователь и протестировал Java RE, и он работал отлично
Я думаю, что в Java RE 1.7.0 есть что-то, что не устанавливается должным образом для служб терминалов под Windows Server 2003. Однако я нахожу действительно странным, что я не нашел никого, кто бы упоминал об этом в Интернете.
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"