簡體   English   中英

如何為特定文件格式設置默認應用程序?

[英]How to set default application for specific file format?

我正在編寫創建.mg文件的應用程序。 這些文件僅包含與普通.txt文件有關的級別的文本。 我只想知道,我該如何設置將這些.mg文件與我的應用程序一起默認運行。

有什么辦法可以在Java中做到嗎?

U應該使用注冊表修改來執行此操作。

知道您應該修改哪些鍵的步驟:

擴展名與HKEY_CLASSES_ROOT鍵相關聯。

請按照以下步驟創建您自己的關聯:

1.打開HKEY_CLASSES_ROOT並創建一個擴展密鑰(如果不存在)

2.打開該密鑰,並寫入“ handler”的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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM