macOS:给APP增加摄像头麦克风权限

前言

作为一名macOS系统下APP开发人员,最近几年一直在使用Qt做跨平台的APP开发.
某一天,在无任何征兆的情况下,QtCreater启动的调试程序突然就再也无法启动设备的摄像头和麦克风了,然后就一拖再拖没有处理

解决

目标

首先我知道权限修改是macOS系统下的数据库文件设置的,所以目标就比较明确了,只需要手动修改数据库文件

在进行下面的操作之前,你可以尝试一下重置权限,有可能就好了,不需要进行下面繁琐的操作了

//重置所有APP权限
tccutil reset All
//重置某一种权限,下面是麦克风和摄像头
tccutil reset Camera
tccutil reset Microphone
//重置某一个APP权限
tccutil reset SERVICE BUNDLE_ID
eg: // 重置Chrome权限
tccutil reset Camera com.google.Chrome
tccutil reset Microphone com.google.Chrome

权限

找到了macOS Monterey终端添加App权限——以QQ、腾讯会议屏幕录制为例,里面提到了需要关闭SIP,然后就需要查找如何进入macOS系统的更新界面(一般重启系统后长按command+R,直到出现相关界面为止,M2是关机之后长按开机键,出现设置图标之后选择设置图标进入),然后在实用工具中打开终端输入

csrutil disable
reboot

修改

不同的系统肯能对应的~/Library/Application\ Support/com.apple.TCC/ 路径下TCC.db文件的表结构不同,所以我们可以使用相关的SQL软件打开,或者使用sqlite3命令打开数据库文件

sqlite> select * from access where service in ('kTCCServiceCamera', 'kTCCServiceMicrophone');
kTCCServiceCamera|com.vmware.fusion|0|2|4|1|??||0|UNUSED||0|1711697594|||UNUSED|0
kTCCServiceMicrophone|com.vmware.fusion|0|2|4|1|??||0|UNUSED||0|1711699918|||UNUSED|0

根据你自己系统的表结构来修改下面的参数

//终端输入sqlite3
.open TCC.db
//第一步查看对应表结构,
select * from access;
//注意!!!,不同系统的表结构字段数目不尽相同,所以下面的命令需要做相应修改
#摄像头权限
INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','app.uubox.QUVCView',0,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1577993260,NULL,NULL,'UNUSED',0);
#麦克风权限
INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','app.uubox.QUVCView',0,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1577993260,NULL,NULL,'UNUSED',0);

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在Mac分类目录。将固定链接加入收藏夹。