通过Java获取Windows文件关联

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

Solutions Collecting From Web of "通过Java获取Windows文件关联"

在Win7中,你可以找到每个文件扩展名中的“class”*

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

键。

例如,在我的机器上

 HKLM\SOFTWARE\Classes\.txt 

有一个txtfile的(默认)键。

在相同的路径中,可以找到打开类txtfile文件的内容:

 HKLM\SOFTWARE\Classes\txtfile 

其中应该有...\shell\open\command的子路径

在我的系统上,

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

 %SystemRoot%\system32\NOTEPAD.EXE %1 

你可以解析它来找到打开.txt文件的可执行文件。

对于用户特定的自定义,您可以替换

 HKLM\SOFTWARE\Classes\ 

 HKCU\Software\Classes\ 

尽管如此,如果可能的话,我喜欢MadProgrammer的建议。

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

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

如果你想启动程序,使用桌面类(如MadProgrammer建议)