Java/Windows获取应用程序位置

Java/Windows获取应用程序位置,java,windows,Java,Windows,有没有一种方法可以在不搜索文件系统的情况下获取已安装应用程序的位置 编辑:很抱歉没有把问题说清楚,我想弄清楚firefox是从java应用程序中安装到哪里的。我想启动扩展的安装。编辑:Firefox在HKLM\Software\Mozilla\Mozilla Firefox\\Main\InstallDirectory项中有一个注册表项。在同一个HKLM\Software\Mozilla路径中还有一个CurrentVersion项,您可以从中获取版本号。编辑:Firefox在HKLM\Softw

有没有一种方法可以在不搜索文件系统的情况下获取已安装应用程序的位置


编辑:很抱歉没有把问题说清楚,我想弄清楚firefox是从java应用程序中安装到哪里的。我想启动扩展的安装。

编辑:Firefox在HKLM\Software\Mozilla\Mozilla Firefox\\Main\InstallDirectory项中有一个注册表项。在同一个HKLM\Software\Mozilla路径中还有一个CurrentVersion项,您可以从中获取版本号。

编辑:Firefox在HKLM\Software\Mozilla\Mozilla Firefox\\Main\InstallDirectory项中有一个注册表项。在同一个HKLM\Software\Mozilla路径中还有一个CurrentVersion密钥,您可以从中获取版本号。

在Linux上,您可以使用Runtime.exec()调用哪个系统程序,例如哪个firefox将返回类似/usr/bin/firefox的内容。这在Windows上不起作用,不幸的是在OS X上也不起作用,尽管它是基于UNIX的。

在Linux上,您可以使用Runtime.exec()调用哪个系统程序,例如哪个firefox将返回类似/usr/bin/firefox的内容。这在Windows上不起作用,不幸的是,在OS X上似乎也不起作用,尽管它是基于UNIX的。

在Windows上执行此操作的唯一方法是通过注册表读取。Jeff Storey的帖子有你需要的注册码。对于从Java实现这一点,我最初的反应是:如果不使用JNI,您就不能这样做

但后来我在谷歌上搜索了一下,发现


这种方法有点新颖,它涉及到访问Sun的Preferences API实现中通常不可用的部分。当然,这对于不同的JVM是不兼容的,并且随着Sun的JRE的发展可能会崩溃-但是。。。嗯,我敢打赌它至少会有用几年,也许更长。而且这比自己编写JNI要容易得多…

在Windows上执行此操作的唯一方法是通过注册表读取。Jeff Storey的帖子有你需要的注册码。对于从Java实现这一点,我最初的反应是:如果不使用JNI,您就不能这样做

但后来我在谷歌上搜索了一下,发现

这种方法有点新颖,它涉及到访问Sun的Preferences API实现中通常不可用的部分。当然,这对于不同的JVM是不兼容的,并且随着Sun的JRE的发展可能会崩溃-但是。。。嗯,我敢打赌它至少会有用几年,也许更长。而且这比自己编写JNI要容易得多…

这取决于你所说的应用程序的“位置”是什么意思。它可以是JVM的路径、JVM实例的cwd、.class文件/JAR的位置或其他一些东西,这取决于应用程序的“位置”是什么意思。它可以是JVM的路径、JVM实例的cwd、.class文件/JAR的位置或其他一些内容。