Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置特定文件格式的默认应用程序?_Java_File_Default - Fatal编程技术网

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

Java 如何设置特定文件格式的默认应用程序?,java,file,default,Java,File,Default,我正在编写创建.mg文件的应用程序。这些文件只包含与普通.txt文件相同的级别文本。我只是想知道,如何设置以我的应用程序作为默认运行这些.mg文件。 在java中有什么方法可以做到这一点吗?U应该通过修改注册表来做到这一点 了解u键应该修改的步骤: 扩展在HKEY_CLASSES_ROOT中关联 按照以下步骤创建您自己的关联: 1.打开HKEY\U CLASSES\U ROOT并创建扩展键(如果不存在) 2.打开该键并将“处理程序”的名称写入DefaultValue中,例如MyApp_ext 3

我正在编写创建.mg文件的应用程序。这些文件只包含与普通.txt文件相同的级别文本。我只是想知道,如何设置以我的应用程序作为默认运行这些.mg文件。


在java中有什么方法可以做到这一点吗?

U应该通过修改注册表来做到这一点

了解u键应该修改的步骤:

扩展在HKEY_CLASSES_ROOT中关联

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

1.打开HKEY\U CLASSES\U ROOT并创建扩展键(如果不存在)

2.打开该键并将“处理程序”的名称写入DefaultValue中,例如MyApp_ext

3.关闭当前密钥并在HKEY\U CLASSES\U ROOT中创建另一个具有处理程序名称(MyApp\U ext)的密钥

4.打开该键并写入此扩展名的DefaultValue说明

5.在处理程序密钥内创建密钥默认图标

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

7.关闭当前键并在处理程序键内创建\shell\Open\Command键

8.打开该键并将应用程序的完整路径(包括参数)写入DefaultValue

8.如果您在创建文件扩展名关联时遇到问题,请打开一个regedit并执行以下操作: 看看H**KEY\u CLASSES\u ROOT**KEY内部的结构

现在用java做上面的修改,试着把下面的代码修改成你的愿望键(这是一个

在windows注册表中进行修改):


你不能。无法使其与任何操作系统、任何DE和任何文件资源管理器一起工作。在windows上,您需要运行相应的regedit命令,才能将此类型添加到默认应用程序中。
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");
    }
}