Windows 10 这个 UWP 的逻辑太垃圾了。
在以前版本的 Windows 中,我们如果想使用一个程序打开一个从来没注册过的扩展名,通常直接右键属性就可以完成。但是在 Windows 10 上,这个做法就失效了。例如,我需要使用 XnView MP 打开 .webp 文件,尽管我已经把 XnView 注册为默认的图像查看器,但是并不是所有的图像格式都被关联到了它上面(这个原因说实话也很简单,Windows 怎么知道什么格式的东西是”图像“,它也不可能维护一个世界上所有图像格式的列表),比如 .webp 格式就没有被关联。使用右键打开方式强行关联到 XnView 以后,就会有一个新的问题,在双击的时候,XnView 是打开了,但是没有打开对应的文件。
因此,还是需要找注册表解决。
在我们使用右键打开方式关联 .webp 格式以后,注册表的情况是这样的:
可以看到,创建了 .webp 这个扩展名,并且指向 .webp_auto_file,然后指向 XnView 执行文件,但是注意没有带任何参数,因此 XnView 无从知道要打开什么文件。
那么这时候可行的解决方法就是,更改 command 的值,在路径后加上 ”%1“ 这个参数。
或者也可以把这两个项都删掉,之后通过命令行解决:
ftype extfile="C:\Program Files (x86)\YourProgram.exe" "%1" assoc .ext=extfile
extfile 可以随便更改,只是描述文件的名字,然后将 .ext 指向这个项就可以了。
之后重启,且需要在 explorer 里面再在右键中打开方式处设置一下关联,关联到刚刚选择的程序,就能正常双击打开了。注意这步一定要做,否则似乎并不会很快生效。
Reference:
https://superuser.com/questions/1080453/adding-or-registering-a-file-type-so-it-can-be-associated-with-an-application