macOS 配置应用沙盒以通过权限访问特定输入设备

夜瑶酱_6722

夜瑶酱_6722

2026-07-14

1062人浏览

原创

bongocat在macos上键盘无响应是因缺少输入监控和辅助功能权限,需手动在“系统设置→隐私与安全性”中分别勾选这两项授权,且沙盒配置须与权限声明协同生效。

macos 配置应用沙盒以通过权限访问特定输入设备

macOS 应用要访问键盘、鼠标等输入设备,不是靠“文件路径权限”或“沙盒书签”,而是依赖系统级隐私授权机制——核心是 输入监控(Input Monitoring) 和 辅助功能(Accessibility) 权限。这两类权限独立于 App Sandbox 文件访问控制,但必须与沙盒配置协同生效。

输入监控权限:让应用“看到”按键和点击

这是键盘响应类应用(如 BongoCat、自定义快捷键工具、输入法增强组件)最关键的权限。它允许应用监听全局键盘和鼠标事件:

  • 必须在 Info.plist 中声明 NSAppleEventsUsageDescription(若使用 Apple Events)和 NSPrivacyAccessedAPITypes(macOS 12+),其中包含 InputMonitoring 类型及对应用途描述
  • 首次调用 CGEvent.tapCreate(...) 或类似 API 时,系统自动弹出授权对话框;用户拒绝后,后续调用返回 nil 或失败
  • 授权状态可编程检测:AXIsProcessTrustedWithOptions([kAXTrustedCheckOptionPrompt: false] as CFDictionary) 返回 false 表示未授权
  • 注意:该权限不通过 Entitlements 文件配置,也不受沙盒容器限制,但沙盒应用仍需用户手动开启(系统设置 → 隐私与安全性 → 输入监控)

辅助功能权限:补充控制能力

部分输入行为(如模拟按键、聚焦窗口、接管光标)需辅助功能权限支持:

macos-suite-readonly
macos-suite-readonly

macOS 只读查询:Mail 未读、Calendar 日程、Notes 搜索、Stocks 行情(输出 JSON)。

下载
  • Info.plist 中需添加 NSAccessibilityUsageDescription 描述用途(例如:“用于在游戏内实现快捷指令触发”)
  • 运行时可通过 AXIsProcessTrusted() 检查是否已获授权
  • 若未授权,可引导用户跳转至系统偏好设置:NSWorkspace.shared.open(URL(string: "x-apple://com.apple.preference.security?section=Privacy&anchor=Accessibility")!)
  • 即使启用了 App Sandbox,此权限也必须单独授予——沙盒本身不限制该能力,但系统强制要求用户知情同意

沙盒配置与输入权限的协同要点

沙盒本身不直接管理输入设备访问,但错误的沙盒配置可能导致授权流程中断或功能降级:

  • 确保 com.apple.security.app-sandbox 在 entitlements 中设为 true,否则上架会被拒;但沙盒启用后,不会阻止输入监控授权弹窗出现
  • 不要在 entitlements 中误加 com.apple.security.temporary-exception.iokit-get-properties 等底层硬件权限——现代 macOS 不允许沙盒应用绕过隐私框架直接读取 HID 设备
  • 若应用同时需要访问用户文件(如记录按键日志到 Documents),则需额外配置 com.apple.security.files.user-selected.read-write 并走 NSOpenPanel 流程,与输入权限分开处理
  • 签名必须完整:修改 Info.plist 或 entitlements 后,需重新 codesign,否则权限声明不被系统识别

调试与验证方法

快速确认输入权限是否就位:

  • 打开“系统设置 → 隐私与安全性 → 输入监控”和“辅助功能”,查找你的 App 名称,确认勾选状态
  • 终端执行:tccutil reset Accessibility com.yourcompany.yourapp 可重置授权,方便测试首次引导流程
  • 控制台中过滤关键词 AXIS、CGEvent、TCC,查看是否有拒绝日志(如 Denied access to service: kTCCServiceAccessibility)
  • 沙盒应用若在授权后仍无响应,检查是否在非主线程调用事件监听 API——部分 API 要求在主线程初始化

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

macos

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

4205

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

375

21

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

140

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

80

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

60

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

40

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

60

13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

2026.09.22

40

19

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

2026.09.22

40

19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

HBuilderX macOS 安装手册
HBuilderX macOS 安装手册

共0课时 | 0人学习