不是解决方案,而是解决方法!
如果没有外部API的支持,则无法使用Java
SDK获取Windows本机信息。代替使用外部API(主要由LGPL许可且未完全开放),我们可以使用shell命令来获取相同的信息。
要获取已安装的软件列表,请使用ProcessBuilder或Runtime.exec运行以下PowerShell命令之一:
Get-WmiObject -class Win32_Product | Select-Object -Property Name
-慢一点!它使用Win32_Product类。Get-ItemProperty HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
-这样比较快,可以提供其他详细信息。这使用PS注册表提供程序。
您可以流式处理这些输出并对其进行处理。
这只是一个解决方法,根据我的分析。由于Java完全独立于平台,因此获取本机信息变得困难,并且必须使用平台本机工具(例如命令外壳,Power Shell等)。



