VB.Net - 在My.Computer.Registry.GetValue中使用通配符

时间:2014-10-27 17:31:52

标签: vb.net registry wildcard

我有一个VB.NET脚本,可以查找当前安装的java版本。 在java 8问世之前,一切都很顺利。

回到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。

我无法经常更新我的软件,因此我想在getvalue中使用wilcard IE就是这样的

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

上面没有用的是他们的任何工作吗?

2 个答案:

答案 0 :(得分:0)

您可以从其中一个Java .dll文件中获取文件版本。对不起,我没有安装Java,但是这样的事情可能对你有帮助:

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

你可以摆弄major,minor等的返回属性。你应该能够构建一个版本字符串来获得你需要的东西。

答案 1 :(得分:0)

使用GetSubKeyNames方法枚举" HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment"的子项,然后按字母顺序选择最后一个(这样就不会掉落)对于任何旧1.7_ xx 键或1.8键)