2012-11-27 129 views
0

我认为这将是一件容易的事情,但是。 。 。 我想让我的Java程序获取用户的Windows文件关联。 换句话说,我想知道用户用来打开.txt文件,.cvs文件等。 assoc和ftype命令提供该信息,但不提供给用户。 换句话说,如果我已将我的文本编辑器设置为Notepad ++,则 assoc和ftype不会显示它。它们会显示系统默认的记事本。 它看起来像我必须从注册表中获取该信息,但我有两个问题。 1)我不知道确切的注册表键我想拉 (虽然我已经看过“注册查询HKEY_CURRENT_USER,HKEY_CLASSES_ROOT等) 2)我不知道如何从注册表中拉出密钥我见过JNI提到 但还没有想出细节。 任何提示赞赏。通过Java获取Windows文件关联

+1

您到底想要达到什么目的? [Desktop](http://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html)可以通过在相关编辑器中为您打开文件来打开/编辑文件。您了解更多[此处](http://docs.oracle.com/javase/tutorial/uiswing/misc/desktop.html) – MadProgrammer

+0

您使用的是哪个版本的Windows? – jedwards

+0

是的,java.awt。桌面似乎是我需要的。我正在使用Windows 7,但希望跨平台的东西。 – ArtD

回答

0

在Win7中,您可以找到“类” *在

HKLM\SOFTWARE\Classes\<extension>\(Default) 

每个文件扩展名键

例如,在我的机器上(默认)键。

在同一路径,你可以找到打开类txtfile的文件:

HKLM\SOFTWARE\Classes\txtfile 

应该具有的...\shell\open\command

在我的系统的子路径,

HKLM\SOFTWARE\Classes\txtfile\shell\open\command\(Default) 

%SystemRoot%\system32\NOTEPAD.EXE %1 

您可以通过解析来找到打开.txt文件的可执行文件。

对于用户特定的自定义,你可以用

HKCU\Software\Classes\ 

更换

HKLM\SOFTWARE\Classes\ 

之所以这么说,我想如果可能MadProgrammer的建议对您的应用程序。

*我确定有一个更好的名字为“班”,我只是不知道它。

0

看看Eclipse的Program类,它应该是你想要的:http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fprogram%2FProgram.html

如果您想要启动该程序,请使用桌面级(如MadProgrammer建议的)

+0

这比我想要的还要多。 “Program.launch(” C:/trash/a.txt “);”推出我的首选文本编辑器。非常感谢! – ArtD

+0

但是,虽然Program.launch()从Eclipse内部工作,但似乎无法从Jar文件中工作。所以这是我的下一个任务。更多的信息赞赏。 – ArtD

+0

我认为在使用程序之前您需要进行一些初始化。你可以尝试在使用程序类之前实例化swt显示吗? – mbelow