iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >MacOS 为指定应用添加指定权限(浏览器无法使用摄像头、麦克风终极解决方案)
  • 853
分享到

MacOS 为指定应用添加指定权限(浏览器无法使用摄像头、麦克风终极解决方案)

macosmacos摄像头权限edge无法使用摄像头 2023-09-25 22:09:55 853人浏览 薄情痞子
摘要

起因:需要浏览器在线做一些测评,但我的 Chrome 没有摄像头/麦克风权限,并且在设置中是没有手动添加按钮的。 我尝试了重装软件,更新系统(上面的 13.5 就是这么来的,我本来都半年懒得更新系统了

起因:需要浏览器在线做一些测评,但我的 Chrome 没有摄像头/麦克风权限,并且在设置中是没有手动添加按钮的。

我尝试了重装软件,更新系统(上面的 13.5 就是这么来的,我本来都半年懒得更新系统了),都没有任何用。

系统版本:MacOS 13.5.1(需要开启 sip,可参考 macOS 开启或关闭 SIP - 少数派 (sspai.com)

思路来源:https://blog.csdn.net/cneducation/article/details/111403294 ,但这篇在新版本已经失效了,数据表格式和一些值的含义做了一些修改,所以,我这里提供的语句,也并非一定可以执行。本篇后面讲简单讲述下原理,只要知道了原理,只要存储方式没有大更改,都没问题。

例如:向 Chrome 添加摄像头、麦克风权限

/usr/bin/sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT INTO access VALUES('kTCCServiceMicrophone','com.Google.Chrome',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1637381304);"/usr/bin/sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT INTO access VALUES('kTCCServiceCamera','com.google.Chrome',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1637381304);"

想知道原理,就继续往下看吧,下面路径中保存着的 SQLite 数据库文件就是 MacOS 的权限配置信息

~/Library/Application Support/com.apple.TCC/TCC.db

使用 PRAGMA table_info(access) 可以看到表结构,重要的就两个 service(权限名称), client(应用包名)

第一步:确认包名

  1. 首先要打开访达,点击左侧应用程序,找到要增加权限的 app
  2. 右键,显示包内容,进入 contents ,找到 info.list
  3. 定位到这一行 CFBundleIdentifier,下面的 标签里的内容就是我们要找的包

第二步:确认权限名

kTCCServiceCamera 是摄像头权限,kTCCServiceMicrophone 是麦克风权限,整体可读性还是很高的,我根据设置中的权限推测出下表,有几个不确定

权限服务解释
kTCCServiceAddressBook访问通讯录的权限。
kTCCServiceAppleEvents发送和接收 Apple 事件的权限。
kTCCServiceBluetoothAlways永久访问蓝牙设备的权限。
kTCCServiceCalendar访问日历的权限。
kTCCServiceCamera访问摄像头的权限。
kTCCServiceFileProviderDomain访问文件与文件夹权限。
kTCCServiceFocusStatus
kTCCServiceLiverpool
kTCCServiceMicrophone访问麦克风的权限。
kTCCServicePhotos访问照片库的权限。
kTCCServiceReminders访问提醒事项的权限。
kTCCServiceSystemPolicyDesktopFolder访问桌面文件夹的系统策略权限。
kTCCServiceSystemPolicyDocumentsFolder访问文稿文件夹的系统策略权限。
kTCCServiceSystemPolicyDownloadsFolder访问下载文件夹的系统策略权限。
kTCCServiceSystemPolicyNetworkVolumes访问网络卷的系统策略权限。
kTCCServiceSystemPolicyRemovableVolumes访问可移动卷的系统策略权限。
kTCCServiceUbiquity

有了包名和权限名就能唯一定位一个应用程序和一个权限了,接着,剩下的值找已经有摄像头/麦克风权限的软件抄一抄

SELECT * FROM access where service = 'kTCCServiceMicrophone' SELECT * FROM access where service = 'kTCCServiceCamera' 

于是就有了下列语句,给 chrome 添加摄像头/麦克风权限

INSERT INTO access VALUES('kTCCServiceMicrophone','com.google.Chrome',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1637381304);INSERT INTO access VALUES('kTCCServiceCamera','com.google.Chrome',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1637381304);

还有能 run 的 python 代码我放在这了,这个是给 edge 加摄像头权限的,根据需要自行更改

import sqlite3# 连接到 SQLite 数据库文件conn = sqlite3.connect(r'/Users/xxx/Library/Application Support/com.apple.TCC/TCC.db')  # 替换 'example.db' 为你的数据库文件名# 创建一个游标对象来执行 SQL 查询cursor = conn.cursor()# 执行 SQL 查询# cursor.execute("""SELECT * FROM access where client = 'com.tencent.meeting' """)  # 替换 'your_table_name' 为你的表名# cursor.execute("""SELECT * FROM access where client = 'com.microsoft.edgemac' """)  # 替换 'your_table_name' 为你的表名# cursor.execute("PRAGMA table_info(access)")cursor.execute("""INSERT INTO access VALUES('kTCCServiceCamera','com.microsoft.edgemac',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1637381304);""")conn.commit()  # 提交事务# 获取查询结果result = cursor.fetchall()# 遍历结果并处理数据for row in result:    print(row)  # 在这里你可以根据需要处理每一行的数据# 关闭游标和数据库连接cursor.close()conn.close()

来源地址:https://blog.csdn.net/caozicheng1999/article/details/132632178

--结束END--

本文标题: MacOS 为指定应用添加指定权限(浏览器无法使用摄像头、麦克风终极解决方案)

本文链接: https://www.lsjlt.com/news/417788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作