我认为这将是一件容易的事,但。 。 。 我希望我的Java程序来获取用户的Windows文件关联。 换句话说,我想知道用户所使用的打开.txt文件,将该.cvs文件等assoc命令和FTYPE命令提供的信息,而不是用户。 换句话说,如果我把我的文本编辑器,记事本++,ASSOC FTYPE并没有表现出来。 它们显示系统默认,记事本,来代替。 它看起来像我不得不从注册表获取该信息,但我有两个问题。 1)我不知道确切的注册表项我想拉(虽然我已经看了“REG查询HKEY_CURRENT_USER,HKEY_CLASSES_ROOT等)2)我不知道如何从注册表中拔出钥匙。我”见过JNI提及,但还没有想出的细节。感谢任何提示。
Answer 1:
在Win7,你可以找到在每个文件扩展名的“类” *
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的建议对您的应用程序。
*我敢肯定有对“类”更好的名字,我只是不知道它。
Answer 2:
看看在Eclipse的程序类,它应该给你想要的东西: http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg %2Feclipse%2Fswt%2Fprogram%2FProgram.html 。
如果你想启动程序,使用桌面级(如MadProgrammer建议)
文章来源: Get Windows files associations via Java