前言
作爲一名macOS系統下APP開發人員,最近幾年一直在使用Qt做跨平臺的APP開發.
某一天,在無任何徵兆的情況下,QtCreater啓動的調試程序突然就再也無法啓動設備的攝像頭和麥克風了,然後就一拖再拖沒有處理
因爲之前修了近一個月的陪產假,老婆給生了一個大胖小子,😀.今天是2024年第一天上班,沒什麼事就解決一下吧.
解決
目標
首先我知道權限修改是macOS系統下的數據庫文件設置的,所以目標就比較明確了,只需要手動修改數據庫文件
搜索
作爲一個程序員,第一步就是百度或者Google相關信息,然後就找到了macOS:給 app 添加攝像頭權限文章,首先就是拿到作者提供的數據進行嘗試,然後結果就是沒有權限.
所以下一步就是解文件決權限問題
權限
還是搜索,然後就找到了macOS Monterey終端添加App權限——以QQ、騰訊會議屏幕錄製爲例,裏面提到了需要關閉SIP,然後就需要查找如何進入macOS系統的更新界面(一般重啓系統後長按command+R,直到出現相關界面爲止),然後在實用工具中打開終端輸入
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 命令行查看數據內容