我们可以使用JAVA列出操作系统中安装的软件吗?

时间:2012-03-08 14:17:49

标签: java operating-system

我想开发一个应用程序,我想根据系统更改数据库。

例如:如果安装了MS-Office,我会将Java代码连接到.mdf文件;如果安装了Oracle,我会使用orathin。 这将有助于我不指定数据库并减少我的依赖关系。

3 个答案:

答案 0 :(得分:4)

简单的答案是否定的。没有标准的方法可以做到这一点,我也不知道有任何第三方库这样做。


更详细的答案是您可以理论上编写自己的代码来执行此操作,但代码将是不可移植且不可靠的。

  • 在Windows上,您需要插入注册表。
  • 在Linux上,您需要检查可能安装该软件的明显的位置,并希望管理员/用户没有决定采用不同的方式。

即使您可以准确地确定安装了哪些软件(与您相关),您也会遇到更多问题。

  • 如果安装了两个数据库产品怎么办?如果没有怎么办?
  • 如果用户想要使用非本地RDBMS怎么办?
  • 其他与数据库相关的配置怎么样?数据库帐户/密码?连接网址?逻辑数据库和表名?
  • 等等。

简而言之,我怀疑您是否能够设计出适合大部分用户的自动安装策略。

答案 1 :(得分:1)

您可以尝试探测所需的应用程序:识别操作系统,然后遍历您希望安装应用程序的目录(%WINDRIVE%/ Program Files,/ Applications,/ usr / share等)。

搜索时,如果版本不同,使用正则表达式可能会有所帮助,因此您不必手动添加每个应用程序版本。

在Linux / Unix中,您可以发出哪个命令来确定应用程序是否已安装,但我不确定它是否可靠(即应用程序二进制文件无法通过PATH变量访问) )。

另一种(更好的)方法是更好地了解OS编程和操作系统的API,并通过JNI进行一些系统调用。

希望这有帮助。

编辑:另一种方法可能是找到相关文件扩展名的默认程序,并检查它是否是您需要的程序(即用户没有...说与.mdf文件关联的VLC播放器)。如果您可以获得与文件类型关联的所有程序的列表,那么您只需抓取该列表即可。请注意,这可能不如之前的解决方案可靠,因为您需要的程序可能没有与之关联的文件类型。

答案 2 :(得分:0)

您可以检查PATH以查找已安装的程序。然后你可以在那里搜索已知程序。

如果找到多个程序或没有找到,则可以提示用户。一般来说,提示用户可能是一个好主意:也许用户有第三个解决方案并能够连接到您的程序,或者您的搜索只找到一个程序xy,而搜索没有产生yx,即yx64或yx2012 on他的系统。

相关问题