macOS:给APP增加摄像头麦克风权限
前言
作为一名macOS系统下APP开发人员,最近几年一直在使用Qt做跨平台的APP开发.
某一天,在无任何征兆的情况下,QtCreater启动的调试程序突然就再也无法启动设备的摄像头和麦克风了,然后就一拖再拖没有处理
因为之前修了近一个月的陪产假,老婆给生了一个大胖小子,😀.今天是2024年第一天上班,没什么事就解决一下吧.
解决
目标
首先我知道权限修改是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
搜索
作为一个程序员,第一步就是百度或者Google相关信息,然后就找到了macOS:给 app 添加摄像头权限文章,首先就是拿到作者提供的数据进行尝试,然后结果就是没有权限.
所以下一步就是解文件决权限问题
权限
还是搜索,然后就找到了macOS Monterey终端添加App权限——以QQ、腾讯会议屏幕录制为例,里面提到了需要关闭SIP,然后就需要查找如何进入macOS系统的更新界面(一般重启系统后长按command+R,直到出现相关界面为止,M2是关机之后长按开机键,出现设置图标之后选择设置图标进入),然后在实用工具中打开终端输入
csrutil disable
reboot
修改
不同的系统肯能对应的~/Library/Application\ Support/com.apple.TCC/
路径下TCC.db
文件的表结构不同,所以我们可以使用相关的SQL软件打开,或者使用sqlite3命令打开数据库文件
根据你自己系统的表结构来修改下面的参数
//终端输入sqlite3
.open TCC.db
//第一步查看对应表结构,
select * from access;
//注意!!!,不同系统的表结构字段数目不尽相同,所以下面的命令需要做相应修改
REPLACE INTO access VALUES('kTCCServiceMicrophone','包名',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1608354323,NULL,NULL,'UNUSED',0);
REPLACE INTO access VALUES('kTCCServiceCamera','包名',0,2,2,1,NULL,NULL,NULL,'UNUSED',NULL,0,1608354323,NULL,NULL,'UNUSED',0);
总结
平心静气,循序渐进
引用
macOS:给 app 添加摄像头权限
macOS Monterey终端添加App权限——以QQ、腾讯会议屏幕录制为例
sqlite3 命令行查看数据内容
A deep dive into macOS TCC.db
本文来自博客园,作者:严_青,转载请注明原文链接:https://www.cnblogs.com/zhao-jie-li/p/17940820