近期我们遇到的情况是,须要统一设置用户的默认浏览器为Google Chrome。而系统默认的是Safari。

这个设置是系统Launch Services基于用户管理的。

意思就是说,即便是改动了系统全局參数,假设用户有特定设置。那么会依从用户配置。

仅仅要一设计用户配置,那么就会相对麻烦点。要想改变。会涉及多种用户情况,比方:网络用户目录的情况。用户的配置信息都在server上,所以配置须要在server上改动;假设用户目录保存在本地,那么能够有两种对策,1是:系统默认用户目录模板须要改变。并且须要遍历并改变已登录用户的全部;2是:部署一个用户级别的launchagent服务,每当一个用户登陆后,都会执行一个程序来完毕设置。那么对于移动用户。特别是可能不知道什么时候才干连接到公司网络的情况,就须要一个终端部署管理系统,比方JAMF的或者免费得Munki等等。

上面的措施基本上能够解决差点儿全部的工作站的情况和用户配置情况,关键是怎样解决:

假设是Google Chrome,似乎非常easy,由于Chrome支持一个内部命令:

open -a "Google Chrome" --args --make-default-browser

只是要是针对其它浏览器就无效了,须要其它方法

一个是使用以下的python脚本:

#/usr/bin/env python

# ------------------------------------------------------
# Set default web browser app
#
# org from: https://gist.github.com/miketaylr/5969656
#
# enhenced version 1.1 by Tony Liu
# ------------------------------------------------------ from LaunchServices import LSSetDefaultHandlerForURLScheme
from LaunchServices import LSSetDefaultRoleHandlerForContentType
import sys webApp=sys.argv[1] # 0x00000002 = kLSRolesViewer
# see https://developer.apple.com/library/mac/#documentation/Carbon/Reference/LaunchServicesReference/Reference/reference.html#//apple_ref/c/tdef/LSRolesMask LSSetDefaultRoleHandlerForContentType("public.html", 0x00000002, webApp)
LSSetDefaultRoleHandlerForContentType("public.xhtml", 0x00000002, webApp)
LSSetDefaultRoleHandlerForContentType("public.url", 0x00000002, webApp)
LSSetDefaultHandlerForURLScheme("http", webApp)
LSSetDefaultHandlerForURLScheme("https", webApp)

使用方法比方设置Safari为默认的,那么就是

python /path/to/setDefaultBrowser.py com.apple.Safari

同理。Google Chrome是

python /path/to/setDefaultBrowser.py com.google.chrome

另外一个方式就是使用开源工具duti

下载编译非常easy,之后执行命令:

duti com.google.chrome.canary public.html all
duti com.google.chrome.canary public.xhtml all
duti com.google.chrome.canary public.url all
duti com.google.chrome.canary http
duti com.google.chrome.canary https

另外另一个人做了一个单独的app, 叫defaultbrowser

參考技术文档:Launch Services

OSX:设置用户默认浏览器的更多相关文章

  1. APUE学习之三个特殊位 设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky

    设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky   set-user-ID: SUID      当文件的该位有设置时,表示当该文件被执行时,程序具有文件 ...

  2. 【转】linux 设置用户id 设置组id

    linux 设置用户id 设置组id   转自 linux 设置用户id 设置组id   最近看apue,简单记录对设置用户id理解(设置组id同理). 1. 相关的id好像很多,共有哪些? 文件2个 ...

  3. UNIX文件的权限之“设置用户ID位”

    用stat函数可以获取一个文件的状态信息,原型是这样的: int stat(const char *path, struct stat *buf); 其中结构体stat的结构: struct stat ...

  4. Windows 10 使用C#如何将IE设置为默认浏览器

    在WPF XBAP项目中遇到这样一个问题,程序在Windows 10上面无法运行.原因是因为Windows 10默认浏览器是Edge,而XBAP程序是需要在IE上面运行的.于是开始想办法修改Windo ...

  5. 设置用户ID和设置组ID

    与一个进程关联的ID有6个或更多,如下图所示: 与每个进程相关联的用户ID和组ID 实际用户ID 实际组ID 我们实际是谁 有效用户ID 有效组ID 附加组ID 用于文件访问权限检索 保存的设置用户I ...

  6. 文件和目录之设置用户ID和设置组ID

    与一个进程相关联的ID有6个或更多,它们如表4-4所示: 表4-4 与每个进程相关联的用户ID和组ID 实际用户ID                            我们实际上是谁 实际组ID ...

  7. YII设置用户访问过滤

    设置用户访问过滤 1.哪个控制器设置访问过滤,就在哪个控制器中添加如下代码 class XxxController extends Controller { //当前控制器是否使用过滤功能 publi ...

  8. linux系统学习笔记:无死角理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID

    一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就是登录的用户的uid. 有效用户ID(EUID):用于系统决定用户对系统资源的权限,也就是说当用 ...

  9. 实际用户ID,有效用户ID和设置用户ID

    摘自http://blog.csdn.net/guosha/article/details/2679334 实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没 ...

随机推荐

  1. 团队Alpha版本冲刺(二)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内 ...

  2. POJ2796 Feel Good -- 单调队列

    Feel Good Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 14489   Accepted: 4015 Case T ...

  3. [BZOJ2036]聪明的阿卑多

    [BZOJ2036]聪明的阿卑多 试题描述 也许你从没听说过阿卑多,但你一定知道他爷爷的爷爷的爷爷,那就是聪明绝顶的阿凡提先生.是的,阿卑多也是个聪明的小孩. 一天,阿卑多骑着他的小毛驴,在小镇上晃悠 ...

  4. location.origin兼容

    if (!window.location.origin) { window.location.origin = window.location.protocol + "//" + ...

  5. php读写文件要加锁

    http://www.bubuko.com/infodetail-241753.html

  6. 【bzoj3894】文理分科 网路流

    [bzoj3894]文理分科 2015年3月25日3,4002 Description  文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过)  小P所在的班级要进行文理分科.他的班 ...

  7. Vue实现增删改查功能

    简单的表单CURD功能demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  8. token防止重复提交

    Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ...

  9. 【07】react 之 生命周期

    阅读目录(Content) 实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 存在期 co ...

  10. iOS不用官方SDK实现微信和支付宝支付XHPayKit

    作者:朱晓辉Allen 链接:https://juejin.im/post/5a90dd3a6fb9a0634912b755 前言 前段时间由于项目需求,移除了项目中的微信支付SDK和支付宝支付SDK ...