在 macOS Sequoia 及更高版本中,当应用程序首次尝试访问本地网络上的设备时,系统会弹出提示。虽然这些决策旨在持久生效,但许多应用程序会触发重复的提示,因为它们的安装路径发生了变化或在更新时使用了临时文件夹——这是 Chrome 和 Brave 等基于 Chromium 的浏览器常见的行为。由于目前没有通过移动设备管理 (MDM) 负载或通用命令行工具预先拒绝这些权限的标准方法,用户经常面临重复的对话框,导致隐私设置中出现大量重复条目。
`dontallow` 工具通过充当监控 `UserNotificationCenter` 进程的轻量级代理来解决此问题。它注册了一个专门用于寻找该进程窗口创建事件的辅助功能观察器。当它检测到询问是否允许应用查找本地网络设备的提示时,它会验证文本内容并自动触发点击“不允许”按钮。开发者设计该工具在闲置时占用零 CPU,并通过作为 launchd 代理运行来在重启后继续生效。为了确保安全,该工具永远不会选择“允许”选项;相反,它提供了一种机制,允许用户手动将特定应用加入白名单,或者在需要授予 AirPlay 或 Chromecast 等功能的合法访问权限时暂时暂停其活动。
这张图片代表了文章中描述的 dontallow 工具的源代码仓库。
虽然该工具在减少干扰方面非常有效,但它依赖于 macOS 的辅助功能权限,这赋予了软件对 UI 交互的显著控制权。这在便利性和安全性之间创造了一种权衡:使用此类工具需要授予未经证实的第三方二进制文件高权限。此外,由于该工具通过匹配对话字符串而非底层系统 ID来运行,目前它仅限于英文本地化的 macOS 版本。那些需要消除这些提示但又希望获得更细粒度透明度的用户仍可能面临挑战,因为当前的实现侧重于自动拒绝,而不是解释为什么特定的应用程序最初触发了该请求。