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

标签 java operating-system

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

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

最佳答案

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

<小时/>

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

  • 在 Windows 上,您需要查询注册表。
  • 在 Linux 上,您需要检查可能安装该软件的明显位置,并希望管理员/用户没有决定采取不同的做法。
<小时/>

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

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

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

关于java - 我们可以使用JAVA列出操作系统中安装的软件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619038/

相关文章:

performance - 是什么使VxWorks如此确定性和快速性?

linux - 为什么我的进程需要很长时间才能终止?

java - spring-boot、JPA 和 CrudRepository 出现@autowire 错误

java - Java 中排列的数据结构

java - 将 View 代码放在 Controller 中是不好的做法吗?

java - 在少数特定情况下丢失的日志消息

linux - 有关和更好地理解编程的一般问题

linux-kernel - Linux中两个进程之间的上下文切换会发生什么?

c - 在循环内运行 fork 会产生意想不到的结果(测量进程切换时间)

java - Elasticsearch Java API 错误 : java. lang.NoSuchMethodError : com. carlotsearch.hppc.ObjectHashSet.equals(Ljava/lang/Object;Ljava/lang/Object;)Z