如何通过代码设置文件关联功能(Mac OSX 和Win)
来源:互联网 发布:大连生态科技城 知乎 编辑:程序博客网 时间:2024/06/16 00:40
一、需求来源
1.比如我想在右键单击后缀为.abc的文件时,open with那个列表里面能选择我的app。
2.本来存在某个应用已经关联该类型的文件,现需要修改成以我的应用为优先级的关联设置。
二、分析文件关联原理
1.Windows: Windows系统很早就加入了文件关联的功能,它大大增加了日常使用操作系统的便利性。所谓的文件关联就是指系统把指定扩展名的文件自动关联到相应的应用程序,比如.doc文件默认情况下就自动和Microsoft Word关联。当用户双击.doc文件的时候,系统会自动用Microsoft Word打开它。这篇文章将介绍怎样在Windows系统下面手动设置或者用程序自动设置文件关联。
2.Mac OSX:在文件关联和右键菜单方面,每当系统安装一个新的应用程序,都会调用 Launch Service 的 API 注册关联的文件类型。有两种情况,一种是通过 pkg 安装包安装的,通常这些应用程序会通过脚本主动向 Launch Service 注册;而第二种常见的拖拽式 .app 应用程序,则是由 Finder 和系统通过对应用程序的的一些判断后代理注册的。应用程序通过 Launch Service 注册以后,就和特定的支持文档产生了关联。
三、解决办法:
1.Windows:HKEY_LOCAL_MACHINE\Software\Classes:该注册表项包括适用所有用户的默认文件关联设置;HKEY_CURRENT_USER\Software\Classes:该注册表项包含只适用当前用户的文件关联设置;除上面两个注册表项和文件关联相关外,还有另外一个非常重要的注册表项:HKEY_CLASSES_ROOT;该注册表项目里面的设置是保证Windows浏览器能够选择正确的应用程序打开相应文件的关键所在。在Windows 2000之后,该注册表项目中的文件关联设置分别存在上面所说的两个注册表项中去了。而HKEY_CLASS_ROOT 注册表项则成为融合(注意,对于相关的文件类型,HKEY_CURRENT_USER下面的设置会覆盖HKEY_LOCAL_MACHINE下面的设置)上面两个注册表项内容的一个镜像。为了更新文件关联设置,你必须更新"HKEY_CURRENT_USER\Software\Classess"或者"HKEY_LOCAL_MACHINE\Software\Classess"下的注册表项,而不是直接更新HKEY_CLASS_ROOT下的注册表项;Windows 通过代码则要修改register, 方法就比较简单了, 大家可以在网上找到答案.但是可能涉及到权限问题,某些杀毒软件会提示警告信息,不以理会即可,或者干脆卸载之。具体参考 http://www.cnblogs.com/xuguilin/archive/2011/01/09/1931169.html。
2.Mac OSX:每个mac app都有一个Info.plist文件,可以在该文件适当的地方加入
Launch Service 隶属于 Application Service Framework (包含一堆的应用程序接口,开发者可以通过这些接口,调用系统服务),用于使一个运行中的程序,能够打开另一个程序,文档,URL的接口。它可以打开另一个程序;在另一个程序中打开文档或URL;找到对于一个文档或URL最适用的程序;为一个应用程序注册它可以关联的文档类型和URL;获得一个文件,URL等正确的显示方式,比如如何显示此类文件的图标以及信息等;维护和更新最近试用过的最近试用程序和文档的列表。
由于mac 文件关联比较复杂,如何是基于Qt开发的应用要想设置文件关联可能需要花费一番功夫。具体信息参考:http://maoa.cn/?sort=45
- 如何通过代码设置文件关联功能(Mac OSX 和Win)
- 如何在Mac OSX 10.10 Yosemite上设置虚拟主机
- Mac osx中如何开启代码高亮
- mac osx应用程序的一些简单设置(隐藏左上角缩小和全屏的按钮)
- Mysql Mac osX 下安装及初始设置和问题解决
- Mac OSX中设置路由
- MAC OSX 设置JAVA_HOME环境变量
- 如何在Mac OSX 中制作dylib和使用dylib
- 如何在Mac OSX 中制作dylib和使用dylib
- 如何打开Mac OSX原生的读写NTFS功能(支持OS X EI,秒杀NTFS+)
- 如何打开Mac OSX原生的读写NTFS功能(支持OS X EI,秒杀NTFS+)
- MAC OSX 如何安装homebrew
- 如何通过注册表修改文件关联方式
- 关于Sailfish SDK安装与Demo的调试(Win、Mac OSX)
- MAC OSX 修改文件隐藏
- 设置centos 和win文件共享
- PHPStorm 常用 设置配置 和快捷键大全 Win/Mac
- PHPStorm 常用 设置配置 和快捷键大全 Win/Mac
- Java学习之Iterator(迭代器)的一般用法
- 请打印给定文件的最后n行
- CLR via C# 读书笔记2-4
- ubuntu下Minicom安装配置
- 风雨哈佛路台词
- 如何通过代码设置文件关联功能(Mac OSX 和Win)
- 文件读写CFile/CStdioFile(转发地址)
- c++中得到当前系统int的最大值
- Windows系统密码破解
- python 格式化时间点转化为时间戳的方法
- pjsip中添加视频
- 给出年月日算出星期几--算法及算法来历
- xp系统和linux系统的相互远程的问题
- Eclipse集成Maven插件tomcat部署 Debug jar包的源码联结