获取与文件关联的程序的路径

时间:2019-04-10 12:46:21

标签: java windows file registrykey

给一个文件,我想提出一种Java编程方式来获取该文件所关联的exe的路径(这是Windows)。我这样做是因为我想自己启动另一个应用程序。我还需要知道文件何时关闭,以便可以更新应用程序中的数据。

当前它通过使用进程来工作,但是我已经对exe的路径进行了硬编码,因此似乎这是缺少的部分。我几乎可以确定我应该在注册表中查找该信息,但是在Computer \ HKEY_CLASSES_ROOT {fileExt}下,我只能看到一个名为ShellEx的文件夹,并且其中有两个奇怪的值,例如{2EC1BE78-0401-44B1-87EF-1A5966D5C5D0 }。对如何进行有任何建议吗?

2 个答案:

答案 0 :(得分:0)

在Windows中,可以使用命令行命令SELECT DL.DoesItMatch([FULL_NAME_1],[FULL_NAME_2]) AS [name_match], ... FROM TABLE_1 ftype对此进行检索,如以下示例所示:

assoc

因此,问题在于如何使用Java启动命令行命令并读取其结果。应该有很多关于此的帖子(一个简单的Google引导我进入this URL)。

答案 1 :(得分:0)

为什么不使用Desktop.open()在关联的本机应用程序中打开文件,例如要打开的文件为c:\ somefile.png,在关联的应用程序中打开它很容易

 Desktop desk = Desktop.getDesktop();
 desk.open(new File("c:/somefile.png"));

对于其他部分,您可以使用Java Watch服务API来确定文件在打开时是否发生了更改。

https://www.baeldung.com/java-nio2-watchservice

https://howtodoinjava.com/java8/java-8-watchservice-api-tutorial/

作为替代方案,Apache Commons IO中也有文件监视器 https://commons.apache.org/proper/commons-io/

可以在此处找到两者的一个小比较: https://www.baeldung.com/java-watchservice-vs-apache-commons-io-monitor-library