2014-10-27 2 views
1

У меня есть сценарий VB.NET, который ищет текущую версию Java. Все работало отлично, пока не вышла Java 8.VB.Net - Использовать wild card в My.Computer.Registry.GetValue

Назад на Java 7 Я бы сделал это.

My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment", "Java7FamilyVersion", Nothing) 

В Java 8 (Java8FamilyVersion) отсутствует и заменена на (FullVersion). Проблема заключается в том, что FullVersion находится за двумя другими папками с версией (18.0_25) Затем другой вызов папки MSI

Так вот проблема; прямо сейчас первая папка называется 18.0_25, но в будущем она будет изменена на что-то вроде 18.0.55ish.

Я не могу обновить программное обеспечение, которое часто, поэтому я хотел бы использовать wilcard в ПолучитьЗначение IE что-то вроде этого

My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment\1.8.*\MSI", "FullVersion", Nothing) 

Выше не работает, является их все, что будет работать?

+0

Можете ли вы не получить файловую версию из java-dll или что-то еще? –

+0

Я смотрю на это прямо сейчас любые советы? – Itomship

+0

См. Ниже, но это может не соответствовать вашему конкретному случаю. Я использую аналогичную функцию для моего приложения, где мне нужно проверить конкретную версию dll - он отправлен как ответ просто потому, что слишком длинный для комментария. –

ответ

0

Используйте метод GetSubKeyNames перечислить раздел (ы) «HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment», затем выбрать в алфавитном порядке в прошлом (так что вы не поддавайтесь ни старых 1.7_хх ключей или ключ 1.8)

0

Вы можете получить версию файла из одного из файлов Java .dll. К сожалению, у меня не установлена ​​Java, но что-то как это может помочь вам:

Dim fvi As FileVersionInfo = FileVersionInfo.GetVersionInfo("somefilename.dll") 
Debug.Print(fvi.ProductVersion) 

Вы можете поиграться с возвращенным свойствами для крупных, малых и т.д. Вы должны быть в состоянии построить строку версии, чтобы получить что вам нужно.

+0

Я пробовал Dim Java864 = FileVersionInfo.GetVersionInfo ("C: \ Program Files (x86) \ Java \ jre1.8.0_25 \ bin \ java.ddl"). ToString И это не сработало. Другая проблема - изменение jre1.8.0_25 во времени. Любой совет? – Itomship

+0

@Itomship Путь к двоичным файлам Java отмечен в HKLM \ SOFTWARE \ Java Runtime Environment \ 1.8 \ JavaHome, и вы можете найти полный путь к jvm.dll в том же ключе в RuntimeLib –

Смежные вопросы