如何在Windows10系统中修改.jar文件的默认应用 |
您所在的位置:网站首页 › 下载文件的打开方式选择了始终使用怎么设置 › 如何在Windows10系统中修改.jar文件的默认应用 |
普通方式(无效)
通常,我们在Windows10系统中修改文件的默认应用有两种方式: 打开系统设置->应用->默认应用->按文件类型指定默认应用,找到相应的文件类型后进行修改;选中目标文件->右键->打开方式->选择其它应用,勾选“始终使用此应用打开**文件”复选框,然后在“其它选项”列表中进行选择,如果列表中没有想要的应用,可以点击“在这台电脑上查找其它应用”,找到想要的应用的可执行文件后选中即可。但是,这两种方式对jar文件都无效。(我目前的jar文件默认应用是jdk15的javaw.exe,想要改成jdk1.8的javaw.exe。) 第二种方式,点击“在这台电脑上查找其它应用”->选中jdk1.8的javaw.exe(并勾选“始终使用此应用打开xx文件”复选框)后还是以原来的默认应用(jdk15的javaw.exe)打开了jar文件,而且jar文件的默认应用也没有改变,甚至在jar文件打开方式的“其它选项”列表中都没有出现这一项,说明并没有生效。 修改注册表既然一般的方法没法生效,那只能通过修改注册表来修改默认应用了。 打开注册表编辑器(快捷键WIN+R -> 输入regedit),因为我们要修改文件的默认打开方式,故定位到计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts项下,找到.jar项,再选中UserChoice项,其中ProgId值为jarfile。 这里需要注意下,注册表中类似文件资源管理器中目录的东西叫项(K),每个项可能有好几个值,这些值用值名称(N)来区分,每个值名称对应一个值数据(V)。 参考网上资料,根据这个值可以定位到计算机\HKEY_CLASSES_ROOT\jarfile项,依次点开shell\open\command项,其(默认)值为"D:\ProgramFiles\Java\jdk-15.0.2\bin\javaw.exe" -jar "%1" %*,其中的路径就是我的jdk15的javaw.exe所在的位置,现修改路径为“D:\ProgramFiles\Java\jdk1.8.0_201\bin\javaw.exe”,其它保持不变。 经测试成功修改了jar文件的默认应用为jdk1.8的javaw.exe。 修改注册表-方法2到了这一步,即使我对注册表一窍不通,也还是有些想法的。既然jar文件在已设置过默认应用的情况下不能用普通方式的第二种(以下简称普2)来修改默认应用,那么如果解绑默认应用的设置,让它回到没有任何默认应用的状态,再用普2来修改是不是就能成了呢?结果一试便知。 既然计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\UserChoice项下的ProgId值和默认应用有关,删掉它应该就能解绑默认应用。但是经过尝试删不掉,连值数据都无法修改。那退而求其次,将计算机\HKEY_CLASSES_ROOT\jarfile\shell\open\command项的(默认)值数据置空试一试。 我们再到注册表的计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\UserChoice项下看看: 至此,我们就有了两种方法了。 推论前面验证过了,对于jar文件,在已经设置默认应用的情况下是不能再通过普通方法修改默认应用的。也就是说当计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\UserChoice项的ProgId值为jarfile的时候,是不可能通过普2将其变成Applications\javaw.exe的,那是不是说明这个值对应的项也没有创建呢?让我们再来测试一下,首先还原到最初的默认应用设置,也就是默认应用为jdk15的javaw.exe(此时的ProgId值为jarfile),并且删除计算机\HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\javaw.exe项,然后按普2操作,果然被删除的项并没有重新创建。 测试过程中发现计算机\HKEY_CLASSES_ROOT\Applications\javaw.exe项和计算机\HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\javaw.exe项是关联的,删除一个另一个也跟着删除,修改也是一样,两者始终同步。 那么到这一步其实可以大致推测下在已经设置默认应用的情况下普2失败的原因了。普2选中jdk1.8的javaw.exe来打开目标jar文件,但是因为缺少-jar导致命令执行失败,转而用原有的默认应用打开jar文件,因此没有在注册表留下记录(创建计算机\HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\javaw.exe项并改变计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\UserChoice项的ProgId值为Applications\javaw.exe)。但是如果jar文件还没有设置默认应用,那么将别无选择,只能以错误的方式(缺少-jar)执行命令,所以虽然jar文件没有运行起来,但是却在注册表留下了记录。 那么,在已经设置默认应用的情况下(ProgId值为jarfile时)我们手动在注册表的计算机\HKEY_CURRENT_USER\SOFTWARE\Classes\Applications项下创建javaw.exe项和其相关子项时会发生什么呢? 这个发现也让我猜想文件打开方式列表中的选项是否和Applications项(包括计算机\HKEY_CURRENT_USER\SOFTWARE\Classes\Applications、计算机\HKEY_CLASSES_ROOT\Applications)下的子项相对应,当然不同的文件类型对应不同的子项集合。对了,还有计算机\HKEY_CLASSES_ROOT\jarfile项也会出现在列表中。 最后先就这样吧,没时间系统的学习注册表,自然也就无法融会贯通,只能把这些在尝试中总结的零碎经验记录下来供后续参考了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |