我已经找到了解决这个问题的方法:
解决 macOS Catalina 中微信、QQ 麦克风/摄像头权限列表为空的问题
问题描述
在 macOS Catalina (10.15) 系统上,安装某些版本的微信、QQ 等应用后,可能会出现以下问题:
1. 应用请求使用麦克风或摄像头时,系统弹出授权窗口,但点击“前往授权”后,在 系统偏好设置 > 安全性与隐私 > 隐私 的麦克风或摄像头列表中,找不到该应用。
2. 列表为空,无法完成授权,导致应用无法使用麦克风或摄像头功能。
3. 硬件本身正常(Siri、听写可用),但特定应用无法调用。
问题根源
此问题源于 macOS 的隐私权限系统 TCC (Transparency, Consent, and Control) 数据库 (TCC.db) 在特定条件下未能正确创建应用权限记录。这通常发生在较旧系统版本与非 App Store 安装的应用之间,因兼容性问题导致“登记”流程失败。
解决原理
通过终端手动执行 SQL 命令,向系统的 TCC.db 数据库插入正确的权限记录,告诉系统“用户已授权该应用使用特定功能”。由于该数据库受系统完整性保护 (SIP) 保护,操作前需临时关闭 SIP,操作后务必重新开启。
完整解决步骤
第 1 步:检查并关闭系统完整性保护 (SIP)
1. 将 Mac 完全关机。
2. 按下电源键开机,然后立即按住键盘上的 Command (⌘) + R 键不放,直到进入恢复模式界面。
3. 在屏幕顶部菜单栏,点击 实用工具 -> 终端。
4. 在终端中输入以下命令并回车:
csrutil disable
5. 命令执行成功后,重启 Mac 进入正常系统。
第 2 步:执行权限修复命令
在正常系统下,打开“应用程序”->“实用工具”->“终端”,根据你的需要执行对应的命令。
注意:每条命令执行后,都会提示输入密码,即你的电脑登录密码(输入时无显示),输完按回车即可。成功执行后,终端无提示,直接返回新命令行。
A. 修复微信权限
• 为微信添加麦克风权限:
sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','com.tencent.xinWeChat',0,1,1,1,NULL,NULL,'UNUSED',NULL,0,0);"
• 为微信添加摄像头权限:
sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','com.tencent.xinWeChat',0,1,1,1,NULL,NULL,'UNUSED',NULL,0,0);"
B. 修复QQ权限
QQ 的 Bundle Identifier 可能有两种,如果第一种 (com.tencent.qq) 无效,请尝试第二种 (com.tencent.qq.mac)。
• 为QQ添加麦克风权限 (标识符1):
sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','com.tencent.qq',0,1,1,1,NULL,NULL,'UNUSED',NULL,0,0);"
• 为QQ添加摄像头权限 (标识符1):
sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','com.tencent.qq',0,1,1,1,NULL,NULL,'UNUSED',NULL,0,0);"
• 备用命令 (标识符2):
sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','com.tencent.qq.mac',0,1,1,1,NULL,NULL,'UNUSED',NULL,0,0);"
sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','com.tencent.qq.mac',0,1,1,1,NULL,NULL,'UNUSED',NULL,0,0);"
第 3 步:验证与收尾
1. 重启应用:完全退出并重新打开微信或QQ,测试麦克风或摄像头功能。
2. 重新开启 SIP (至关重要!):重复第 1 步进入恢复模式,在终端中输入以下命令并回车:
csrutil enable
3. 重启 Mac,系统安全性恢复完整。
注意事项
1. 操作风险:修改系统数据库有一定风险,请确保严格按步骤操作。操作前最好有时间机器备份。
2. SIP 是关键:关闭 SIP 是修改的前提,但完成后必须重新开启,否则会大幅降低系统安全性。
3. 适用范围:此方法主要解决因记录缺失导致的权限列表为空问题。如果应用本身有故障,此方法可能无效。
4. 标识符差异:不同版本、不同安装方式的应用,其 Bundle Identifier 可能不同。如果常用标识符无效,可尝试搜索或通过工具查找该应用的正确标识符。
总结
本文介绍的方法通过直接修复系统权限数据库,从根本上解决了 macOS Catalina 及类似版本中特定应用权限“消失”的问题。该方法思路清晰,效果显著,希望能帮助到受此问题困扰的用户。
本文方法由AI探索整理,欢迎转载分享,以帮助更多遇到相同问题的朋友。其他系统版本我没有进行尝试,请知悉!
最后:为防止意外,请一定使用时间机器备份。请一定使用时间机器备份!请一定使用时间机器备份!