如何为特定文件格式设置默认应用程序?

时间:2014-05-18 18:07:47

标签: java file default

我正在编写应用程序,即创建.mg文件。这些文件只包含与正常.txt文件相关的文本。我只是想知道,如何将我的应用程序设置为默认运行这些.mg文件。

有没有办法在java中做到这一点?

1 个答案:

答案 0 :(得分:0)

U应该通过注册表修改来执行此操作。

知道应修改哪个密钥的步骤:

扩展程序与 HKEY_CLASSES_ROOT 键相关联。

按照以下步骤创建自己的关联:

1.打开 HKEY_CLASSES_ROOT 并创建扩展密钥(如果它不存在)

2.打开该密钥并写入"处理程序"的DefaultValue名称。 - 像MyApp_ext这样的东西

3.关闭当前密钥并在 HKEY_CLASSES_ROOT 中创建另一个密钥,其中包含处理程序的名称(MyApp_ext)

4.打开该密钥并写入此扩展的DefaultValue描述。

5.在处理程序密钥中创建一个关键的DefaultIcon。

6.打开该密钥,并将DefaultValue写入包含图标的文件的完整路径。

7.关闭当前密钥并在处理程序密钥

中创建\ shell \ Open \ Command密钥

8.打开该密钥并写入DefaultValue应用程序的完整路径,包括参数。

8.如果您在创建文件扩展名关联时遇到麻烦,请打开注册表并执行 看看H ** KEY_CLASSES_ROOT **键里面的结构。

现在要在java上面进行上面的修改尝试修改下面的代码到你想要的密钥(它的代码为

在Windows注册表中修改

import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;

public class WindowsRegistrySnippet {
    public static void main(String[] args) {
        // Read a string
        String productName = Advapi32Util.registryGetStringValue(
            WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "ProductName");
        System.out.printf("Product Name: %s\n", productName);

        // Read an int (& 0xFFFFFFFFL for large unsigned int)
        int timeout = Advapi32Util.registryGetIntValue(
            WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows", "ShutdownWarningDialogTimeout");
        System.out.printf("Shutdown Warning Dialog Timeout: %d (%d as unsigned long)\n", timeout, timeout & 0xFFFFFFFFL);

        // Create a key and write a string
        Advapi32Util.registryCreateKey(WinReg.HKEY_CURRENT_USER, "SOFTWARE\\StackOverflow");
        Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "SOFTWARE\\StackOverflow", "url", "http://stackoverflow.com/a/6287763/277307");

        // Delete a key
        Advapi32Util.registryDeleteKey(WinReg.HKEY_CURRENT_USER, "SOFTWARE\\StackOverflow");
    }
}