在 Windows 中使用 java 查找特定的注册表项

Riy*_*eed 5 java windows registry version

我可以在Windows中转到regedit,然后转到编辑->查找并输入我想在计算机中找到的密钥(在我的例子中是Maxima)并找到所需的密钥(在我的例子中是Maxima)(在我的例子中它位于“HKEY_LOCAL_MACHINE”中\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Maxima-5.17.1_is1"),但我需要在java中动态执行此操作,并找到当前安装的maxima版本及其在Windows中的目录位置。我不知道如何继续。

我尝试使用此处所述的方法:使用 Java 读取/写入 Windows 注册表,但要使用这些方法,我需要知道密钥。如何在java中动态查找密钥?或者还有其他方法可以使用java在windows中查找软件的版本和目录位置吗?

afz*_*lex 4

我将用这个课程来回答你的问题。因为它是纯java代码写的。

  1. WinRegistry这里上课。
  2. 获取父键中所有键的列表。
  3. 过滤列表以获得最合适的键(或确切的键)。
  4. 然后你可以在这个键中查看你想要的值。

这是可以帮助您的代码:

List<String> ls = WinRegistry.readStringSubKeys(WinRegistry.HKEY_LOCAL_MACHINE,
    "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\");
String key = ls.stream().filter(st -> st.matches("Maxima.*")).findAny().get();
Run Code Online (Sandbox Code Playgroud)

现在这个key值将是Maxima-5.17.1_is1(如果存在,否则java.util.NoSuchElementException将被抛出)。您可以使用它来获取任何Value