查看: 40493|回复: 68345
打印 上一主题 下一主题

MacOS App代码申请管理员权限

[复制链接]
亚洲星娱乐手机版
跳转到指定楼层
楼主
发表于 2019-04-19 11:16:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

MacOS App代码申请管理员权限


原文: https://jacobpan3g.github.io/cn/2018/02/07/gain-root-permission-for-mac-app/,有问题欢迎在原文评论区一起讨论交流,我会及时回复。

在MacOS App开发中,有一些操作需要管理员权限,需要弹出认证对话框让用户输入账号和密码,这个过程就是MacOS App提权的过程,主要有下面几种方式:

1. AuthorizationExecuteWithPrivileges()

使用这个接口最有代表的库是STPrivilegedTask,这是一个封装得很好得App提权库,接口与NSTask十分像,使用起来十分方便。

可惜得是AuthorizationExecuteWithPrivileges()接口在MacOS 10.7开始deprecated,据说在10.12的版本该接口就关闭了。

因此,若要兼容10.12以后的MacOS版本,就不得不放弃使用STPrivilegedTask库了。

2. 使用ServiceManagement.framework注册LaunchdDaemon

这是Apple官方目前推荐的提权方式,官方有一个SMJobBless的Demo,是用来有点复杂,具体请见另一篇文档"SMJobBless官方Demo笔记"

该方法有一个几个小缺点:

  • 弹出认证对话框的提示内容是"需要Install Helper",而且每次打开都是这样的提示,对于小白用户来说,会不会误导用户App老是在安装什么东西?
  • LaunchdDaemon及其配置文件是需要安装到/Library下的,当用户把App卸载后会不会存在"残留问题"?

3. 使用AppleScript

do shell script "..." with administrator privileges

省略号部分填入shell脚本,任何可执行文件都需要写全路径,如/bin/ls

以上是AppleScript脚本,通过这种方式提权有以下有点:

  • 比上述"注册LaunchdDaemon"方法实现起来简单很多
  • 同时也不用担心卸载残留的问题,因为全部东西都在.app里

AppleScript脚本在objective-c中有两种执行方式:

  • 通过NSTask执行"/usr/bin/osascript -e "do shell ...""
  • 通过NSAppleScript执行

方法1有两个缺点:

  • do shell script会在所有shell执行完成后再把所有stdout返回,因此当启动的是Daemon进程,就算使用NSTask的fileHandle Notification,也无法把stdout分次读取出来。
  • 这种方法的认证窗口提示信息是"osascript wants to make changes.",对于小白用户来说会不会有一种这样的感觉"我明明安装的是XXX.app,怎么来了一个osascript让我输入账号密码?会不会是恶意程序?"

而使用NSAppleScript方法时,认证窗口的提示信息是"APP_NAME wants to make changes.",感觉这样的提示更加友好。但也有一些缺点:

  • NSAppleScript执行Daemon进程的话会直到Daemon退出才退出,即会一直占用线程。
    解法:建议在子线程使用NSAppleScript,以免UI无法响应
  • 也存在stdout只能等待Daemon退出才全部打印的问题

Jacob Pan ( jacobpan3g.github.io/cn )

当前文章://unoarray/mz5z8.html

发布时间:2019-04-19 01:31:04

金牌娱乐 沙龙365青龙厅 足球比分90vs足球比分下载 美高梅手机版4858am 奔驰宝马鱼丸游戏外挂 永胜娱乐登录链接 殴亿娱乐登录不了 uedbet客户端 澳门永利_澳门永利娱乐_澳门永利娱城 

点击获取礼包
澳门永利-娱乐场老品牌
沙发
发表于 2019-04-19 11:38:45 | 只看该作者
“太疯狂了!”赫拉双目震撼的望着刘皓,她从来没想过会有这样的男人,在她看来刘皓能和她共同进退不出卖她已经是很好的了,却没想到最后居然是自己在一边看戏,刘皓独自一人抗衡赫耳墨斯的自爆。
回复 支持 反对

使用道具 举报

北京赛车PK10计划网- PK10计划人工计划-PK10全天计划网页版
板凳
发表于 2019-04-19 04:13:28 | 只看该作者
“走吧。”刘皓知道前面的道馆都是难度不太大,只有最后的几个道馆才有意思,不过锻炼一下小精灵增加一下实战经验将训练的成果化为实际战力还是没问题的。/unonews56731/index.html
回复 支持 反对

使用道具 举报

大奖娱乐|官方网站
地板
发表于 2019-04-19 13:26:25 | 只看该作者
唐三赶忙道:“各位前辈都是我的长辈,以后也都是唐门中的长老。是不能再叫唐三了。我的长辈和年纪比我大的朋友都叫我小三。各位前辈也就这么称呼我吧。”
回复 支持 反对

使用道具 举报

海王星娱乐注册
5#
发表于 2019-04-19 11:14:21 | 只看该作者
严进施礼道:“严进年迈,雄心不再,如此宝物留之可惜,索性效仿开平王将宝甲赠予林风。”林风同样一愣,金丝宝甲,刀枪不入,如此宝物,试问谁不想要,严进偏偏给了自己。
回复 支持 反对

使用道具 举报

美高梅官网
6#
发表于 2019-04-19 14:21:52 | 只看该作者
“杀”苏寒山将宝剑一拍,宝剑便飞刺七大护法部众。忽然一道紫金光华从天而降“当”一下挡住了苏寒山的宝剑,原来是一个八角紫金锤。紫金锤挡住苏寒山的宝剑之后便飞腾起来,直击镇在七大护法部众上的五岳大山。
回复 支持 反对

使用道具 举报

大发官网网址是多少
7#
发表于 2019-04-19 06:40:36 | 只看该作者
三人又走了一程,渐渐地要到李庆安的住处了,李庆安再也忍不住问道:“雾娘,你们今晚住哪里?”
回复 支持 反对

使用道具 举报

www lehu88 vip com
8#
发表于 2019-04-19 01:41:15 | 只看该作者
“从今天开始我就是你们的统治者,你们可以选择反抗,但是代价就是死!”刘皓懒得多说,直接放出了自己的气势……
回复 支持 反对

使用道具 举报

www.768sbf
9#
发表于 2019-04-19 15:18:04 | 只看该作者
晋王手掌猛的一挥,马车一旁的木杆咔的一声直接被一掌斩断,这一下来的有些突然,站在旁边的那个人吓了一跳,胳膊粗细的木杆就这样断了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

澳门美高梅官网_v012.com|澳门美高梅注册网址是互联网最大的搜索引擎优化研究中心,是致力于培养学员用户体验意识和提供专业技术解答的专业培训机构, 成立于2007年,2008年第一家入驻歪歪的培训机构,2014年成为腾讯课堂战略合作机构。
© 2007-2016 澳门美高梅官网_v012.com|澳门美高梅注册网址 湘ICP备13004652号-1 Powered by Discuz!X  Template by 澳门美高梅官网_v012.com|澳门美高梅注册网址 
快速回复 返回顶部 返回列表