我正在编写应用程序,即创建.mg文件。这些文件只包含与正常.txt文件相关的文本。我只是想知道,如何将我的应用程序设置为默认运行这些.mg文件。
有没有办法在java中做到这一点?
答案 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");
}
}