macOS Sequoia 之后,很多应用第一次访问本地网络时都会弹“允许查找局域网设备?”——按理说决定会被记住,但对不少应用它会每次启动都弹。dontallow 就是来替你点“不允许”的小工具:弹窗出现后零点几秒内自动帮你按掉,空闲时零 CPU 占用,重启后依然生效。
为什么总弹:Chromium 系浏览器(Chrome、Brave、Edge、Arc 等)每次启动会把自己的应用包复制到随机临时文件夹以便原地更新,macOS 按随机路径记录本地网络决定,下次启动就被当成全新应用;隐私设置里会攒下一堆指向不存在路径的重复“Google Chrome.app”行。用版本化安装路径(…/versions/1.2.3/)的应用每次更新也一样。还有些弹窗会被归到根本没在运行的应用头上。
安装:brew install johncassil/tap/dontallow,再 dontallow install,会写一个按用户的 launchd agent 并打开系统设置让你授予辅助功能权限(靠它才能点按钮)。只有两个 Swift 文件、零依赖。
留后路:每次驳回都会发一条通知,写明是哪个应用和暂停命令;dontallow pause 10m 可暂停一阵;把应用名写进 ~/.config/dontallow/allowlist 可永久放过它;被驳回的决定会记一条拒绝记录,可在系统设置的“本地网络”里再改回允许。真正需要本地网络权限的场景(Chromecast/AirPlay 发现、局域网联机、打印机)先暂停再自己点允许即可。
注意:目前只认英文版 macOS 的弹窗文字(本地化支持在计划中);构建需要 macOS 13+,弹窗本身只存在于 macOS 15 Sequoia 及之后;升级后若提示辅助功能授权丢失,需要在设置里删掉重加一次。
来源:GitHub @johncassil,原文:https://github.com/johncassil/dontallow


没有回复内容