MacOS 为指定应用添加指定权限(浏览器无法使用摄像头、麦克风终极解决方案)
起因:需要浏览器在线做一些测评,但我的 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(应用包名)

第一步:确认包名
- 首先要打开访达,点击左侧应用程序,找到要增加权限的 app
- 右键,显示包内容,进入 contents ,找到 info.list
- 定位到这一行
<key>CFBundleIdentifier</key>
,下面的<String>
标签里的内容就是我们要找的包
第二步:确认权限名
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()
相关文章:

MacOS 为指定应用添加指定权限(浏览器无法使用摄像头、麦克风终极解决方案)
起因:需要浏览器在线做一些测评,但我的 Chrome 没有摄像头/麦克风权限,并且在设置中是没有手动添加按钮的。 我尝试了重装软件,更新系统(上面的 13.5 就是这么来的,我本来都半年懒得更新系统了)…...

Mysql 流程控制
简介 我们可以在存储过程和函数中实现比较复杂的业务逻辑,但是需要对应的流程控制语句来控制,就像Java中分支和循环语句一样,在MySQL中也提供了对应的语句,接下来就详细的介绍下。 1.分支结构 1.1 IF语句 IF 表达式1 THEN 操作1…...

Java学习笔记之----I/O(输入/输出)二
【今日】 孩儿立志出乡关,学不成名誓不还。 文件输入/输出流 程序运行期间,大部分数据都在内存中进行操作,当程序结束或关闭时,这些数据将消失。如果需要将数据永久保存,可使用文件输入/输出流与指定的文件建立连接&a…...

2024字节跳动校招面试真题汇总及其解答(一)
1. 【算法题】重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:hea…...

【Nginx23】Nginx学习:响应头与Map变量操作
Nginx学习:响应头与Map变量操作 响应头是非常重要的内容,浏览器或者客户端有很多东西可能都是根据响应头来进行判断操作的,比如说最典型的 Content-Type ,之前我们也演示过,直接设置一个空的 types 然后指定默认的数据…...

前端代理报错Error occured while trying to proxy to: localhost:端口
webpack配置进行前端代理时, 报错信息如下:(DEPTH_ZERO_SELF_SIGNED_CERT) 需设置:secure为false即可解决此报错 // webpack配置前端代理config["/test"]{target: https://xxxx.com,changeOrigin: true,secure: false // 这个配置…...

QT DAY6
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);socket new QTcpSocket(this);//如果连接服务器成功,该客户端就会发射一个connected的信号。//我们…...

Slint学习文档
Slint学习文档 Slint Learn如何学习本文档学习顺序标志说明 Slint With VSCodeSlint With Rust依赖👎定义宏 Slint与Rust分离1.添加编译依赖(slint-build)2.编写slint文件3.编写build.rs4.编写main.rs 普通组件主窗体Windowexample 文本Texte…...

【最新!七麦下载量analysis参数】逆向分析与Python实现加密算法
文章目录 1. 写在前面2. 请求分析3. 加密分析4. 算法实现 1. 写在前面 之前出过一个关于榜单analysis的分析,有兴趣的可以查看这篇文章:七麦榜单analysis加密分析 最近运营团队那边有同事找到我们,说工作中偶尔需要统计分析一下某APP在一些主…...
蓝桥杯练习题(3的倍数)
问题描述 小蓝对 3 的倍数很感兴趣。现在他手头有三个不同的数 a,b,c, 他想知道, 这三个数中是不是有两个数的和是 3 的倍数。 例如, 当 a3,b4,c6 时, 可以找到 a 和 c 的和是 3 的倍数。 例如, 当 a3,b4,c7 时, 没办法找到两个数的和是 3 的倍数。 输入格式 输入三行, 每行…...
安装Qe-7.2细节
编译 直接编译报错,发现要使用gpu加速。 检查linux的GPU: nvidia-smi lspci |grep -i nvidia module load cuda ./configure make all 安装curl mkdir build cd build …/configure --prefix/home/bin/local/curl make make install 加入路径: expor…...

3.运行项目
克隆项目 使用安装的git克隆vue2版本的若依项目,博主使用的版本是3.8.6. git clone https://gitee.com/y_project/RuoYi-Vue.git目录结构如下图所示,其中ruoyi-ui是前端的内容,其它均为后端的内容。 配置mysql数据库 在数据库里新建一个…...
【算法题】2651. 计算列车到站时间
题目: 给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。 返回列车实际到站的时间。 注意,该问题中的时间采用 24 小时制。 示例 1…...

Mybatis传递实体对象只能直接获取,不能使用对象.属性方式获取
mybatis的自动识别参数功能很强大,pojo实体类可以直接写进mapper接口里面,不需要在mapper.xml文件中添加paramType,但是加了可以提高mybatis的效率 不加Param注解,取值的时候直接写属性 //这里是单参数,可以不加param!…...

flink 写入数据到 kafka 后,数据过一段时间自动删除
版本 flink 1.16.0kafka 2.3 流程描述: flink利用KafkaSource,读取kafka的数据,然后经过一系列的处理,通过KafkaSink,采用 EXACTLY_ONCE 的模式,将处理后的数据再写入到新的topic中。 问题描述࿱…...

golong基础相关操作--一
package main//go语言以包作为管理单位,每个文件必须先声明包 //程序必须有一个main包 // 导入包,必须要要使用 // 变量声明了,必须要使用 import ("fmt" )/* * 包内部的变量 */ var aa 3var ss "kkk"var bb truevar …...

【深度学习】基于卷积神经网络的铁路信号灯识别方法
基于卷积神经网络的铁路信号灯识别方法 摘 要:1 引言2 卷积神经网络模型2.1 卷积神经网络结构2.2.1 卷积层2.2.2 池化层2.2.3 全连接层 3 卷积神经网络算法实现3.1 数据集制作3.2 卷积神经网络的训练过程3.2.1 前向传播过程 4 实验5 结语 摘 要: 目前中…...

DR IP-SoC China 2023 Day演讲预告 | 龙智Perforce专家解析芯片开发中的数字资产管理
2023年9月6日(周三),龙智即将亮相于上海举行的D&R IP-SoC China 2023 Day,呈现集成了Perforce与Atlassian产品的芯片开发解决方案,助力企业更好、更快地进行芯片开发。 D&R IP-SoC China 2023 Day 是中国首个…...

解决github连接不上的问题
改 hosts 我们在浏览器输入 GitHub 的网址时,会向 DNS 服务器发送一个请求,获取到 GitHub 网站所在的服务器 IP 地址,从而进行访问。 就像你是一名快递员,在送快递前要先找中间人询问收件人的地址。而 DNS 就是这个告诉你目标地址…...
# DevOps名词定义梳理
DevOps名词定义梳理 极限编程座右铭:如果它令你很受伤,那么就做更多的练习(If it hurts, do it more often) 经常人们会把这些名词用错: 构建:就是把源代码制成成品的过程,这个过程一般会有单元…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...