2015-02-23 62 views
1

我正在尋找一種方法,使用java來查找打開某個擴展的默認應用程序。例如,我讓Gimp設置爲打開所有的.jpg文件。所以當我評估xyz.jpg時,我希望能夠找到Gimp。我不想用應用程序打開文件,我只是想知道它是什麼。Java查找默認桌面應用程序的擴展

我試圖通過註冊表篩選和GIMP是不是默認情況下,它是Windows照片查看器,即使桌面識別它爲GIMP。

我也試過從命令行使用assoc和ftype,它還返回了Windows照片查看器。我認爲這是因爲它只是看着註冊表。

注意:我不想更改註冊表中的默認應用程序我只想知道如何找到桌面找到的作爲某個擴展的默認應用程序的內容。

Matt

+0

您可以使用JNA調用Win SDK函數FindExecutable https://msdn.microsoft.com/en-us/library/windows/desktop/bb776419(v=vs.85).aspx – Joachim 2015-02-23 17:18:00

+0

試過了。它返回的是單個字符'C'。我甚至在視覺工作室中創建了一個cpp項目,並僅使用本機C++來嘗試這個項目,並獲得了相同的結果。我正在測試這個test.txt文件,我默認使用notepad ++打開 – cain4355 2015-02-23 20:59:12

回答

0

我在註冊表中找到了用戶定義應用程序的條目。 HKEY_CURRENT_USER \軟件\微軟\的Windows \ CurrentVersion \ ApplicationAssociationToasts。

然後我從註冊表中加載所有這些條目,並抓住我需要的東西。