macos 关闭了SIP麦克风授权问题

5 阅读2分钟

如果系统的 SIP(系统完整性保护)已经关闭,您就可以自由地为任何应用添加所需的权限。

为了让命令更通用,且避免因不同 macOS 版本(如 Sequoia/Sonoma)数据库列数变化而导致命令报错,我们可以使用 “指定列名” 的写法。这样您只需要关注两个参数:权限服务名称 和 应用的 Bundle ID(包名)

通用的写入模板如下:

sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version) VALUES ('[权限服务名称]', '[应用 Bundle ID]', 0, 2, 2, 1);"

第一步:获取其他应用的 Bundle ID(包名)

要为其他应用加权限,您需要先获取它的唯一识别码(Bundle ID)。

  • 最快的获取方法:在终端中输入以下命令,将双引号内的软件名称替换为您在“应用程序”文件夹中看到的实际名称:

    osascript -e 'id of app "微信"'
    # 返回结果示例:com.tencent.xinWeChat
    

    (注:如果查询失败,通常是因为软件名称中含有空格或特殊字符,请确保名称与访达里的一致)

  • 常见软件的 Bundle ID 示例

    • 微信:com.tencent.xinWeChat

    • 腾讯会议:com.tencent.meeting

    • 钉钉:com.alibaba.DingTalkMac

    • 飞书:com.bytedance.ee.lark

    • Zoom:us.zoom.xos


第二步:根据需要选择“权限服务名称”

除了麦克风,您也可以用这个命令授权其他硬件:

  • 麦克风权限:kTCCServiceMicrophone

  • 摄像头权限:kTCCServiceCamera

  • 屏幕录制权限:kTCCServiceScreenCapture

  • 辅助功能权限(Accessibility):kTCCServiceAccessibility


第三步:组合并执行命令

假设您现在想给 微信 授予 麦克风 权限,命令组合后如下:

sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version) VALUES ('kTCCServiceMicrophone', 'com.tencent.xinWeChat', 0, 2, 2, 1);"

如果您想给 微信 授予 摄像头 权限:

sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version) VALUES ('kTCCServiceCamera', 'com.tencent.xinWeChat', 0, 2, 2, 1);"

第四步:使权限生效

每次在终端中修改完权限后,都需要执行以下命令刷新系统服务:

killall tccd

刷新后,去系统设置的“隐私与安全”中查看,对应的应用就已经成功出现在列表中并开启了。