1

我认为这将是一件容易的事,但是。. . 我希望我的 Java 程序能够获取用户的 Windows 文件关联。换句话说,我想知道用户使用什么来打开 .txt 文件、.cvs 文件等。 assoc 和 ftype 命令提供该信息,但不为用户提供。换句话说,如果我将文本编辑器设置为 Notepad++,则 assoc 和 ftype 不会显示它。它们改为显示系统默认值记事本。看起来我必须从注册表中获取该信息,但我有两个问题。1)我不知道我想要提取的确切注册表项(尽管我已经查看了“reg query HKEY_CURRENT_USER、HKEY_CLASSES_ROOT 等)2)我不知道如何从注册表中提取密钥。我已经看到提到过 JNI,但还没有弄清楚细节。任何提示表示赞赏。

4

2 回答 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 回答