我以为这会是一件容易的事,但是。 。 。
我希望我的 Java 程序能够获取用户的 Windows 文件关联。
换句话说,我想知道用户使用什么来打开.txt文件、.cvs文件等。
assoc 和 ftype 命令提供该信息,但不提供给用户。
换句话说,如果我将文本编辑器设置为 Notepad++,
assoc 和 ftype 不显示它。它们显示系统默认值“记事本”。
看来我必须从注册表中获取该信息,但我有两个问题。
1)我不知道我想要提取的确切注册表项
(虽然我看过“reg query HKEY_CURRENT_USER、HKEY_CLASSES_ROOT等)
2)我不知道如何从注册表中提取密钥。我见过提到 JNI
但还没有弄清楚细节。
任何提示表示赞赏。
在Win7中,您可以在以下位置找到每个文件扩展名的“类”*
HKLM\SOFTWARE\Classes\<extension>\(Default)
key.
例如,在我的机器上
HKLM\SOFTWARE\Classes\.txt
有一个(默认)密钥txtfile
.
在同一路径中,您可以找到打开该类文件的内容txtfile
:
HKLM\SOFTWARE\Classes\txtfile
其中应该有一个子路径...\shell\open\command
在我的系统上,
HKLM\SOFTWARE\Classes\txtfile\shell\open\command\(Default)
is
%SystemRoot%\system32\NOTEPAD.EXE %1
您可以解析它以找到打开 .txt 文件的可执行文件。
对于特定于用户的自定义,您可以替换
HKLM\SOFTWARE\Classes\
with
HKCU\Software\Classes\
话虽这么说,如果可能的话,我喜欢 MadProgrammer 的建议。
* 我确信“类”有一个更好的名称,只是我不知道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)