[英]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.