我认为这将是一件容易的事,但是。. . 我希望我的 Java 程序能够获取用户的 Windows 文件关联。换句话说,我想知道用户使用什么来打开 .txt 文件、.cvs 文件等。 assoc 和 ftype 命令提供该信息,但不为用户提供。换句话说,如果我将文本编辑器设置为 Notepad++,则 assoc 和 ftype 不会显示它。它们改为显示系统默认值记事本。看起来我必须从注册表中获取该信息,但我有两个问题。1)我不知道我想要提取的确切注册表项(尽管我已经查看了“reg query HKEY_CURRENT_USER、HKEY_CLASSES_ROOT 等)2)我不知道如何从注册表中提取密钥。我已经看到提到过 JNI,但还没有弄清楚细节。任何提示表示赞赏。
问问题
1327 次
2 回答
0
在 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 对您的应用程序的建议。
* 我确定“类”有更好的名称,我只是不知道。
于 2012-11-27T01:52:42.653 回答
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 建议的)
于 2012-11-27T01:53:01.623 回答