【已解决】消除macOS 15.2以上版本频繁录屏提示

通过运行Bash脚本的方式解决这个烦人的提示。

自从升级到 macOS 15.3 以后,屏幕右上角就总有像这样的提示,非常分散注意力,影响工作效率。

image

image

原因是从 macOS 15.2 开始,安全策略升级了。除此之外也会有录屏/截屏软件每个月都要允许访问这样的操作,参见(这里应该有一个链接但是还没写完相关内容)

解决方法

这个烦人的提示的解决办法也很简单,命令行一行就能解决。

curl -L "https://github.com/luckman212/screencapture-nag-remover/releases/download/1.3.3/screencapture-nag-remover.sh" | bash

工作原理

该脚本修改 macOS 内部的 ScreenCaptureApprovals.plist 文件,并提供了自动化方法,使其在后台持续运行。

1. 检测 macOS 版本

脚本首先通过 sw_vers –productVersion 解析 macOS 版本号,并检查系统是否为 macOS 15 或更高版本。如果版本低于 15,则脚本直接退出。

IFS='.' read -r MAJ MIN _ < <(/usr/bin/sw_vers --productVersion)
if (( MAJ < 15 )); then
    echo >&2 "this tool requires macOS 15 (Sequoia)"
    exit
fi

2. 目标文件与关键路径

脚本涉及的核心系统文件包括:

  • ScreenCaptureApprovals.plist(管理应用程序的屏幕截图许可)

  • TCC.db(TCC,即 Transparency, Consent, and Control 数据库)

  • LaunchAgents 目录(用于自动执行后台任务)

其中,ScreenCaptureApprovals.plist 记录了应用程序何时最后请求过屏幕截图权限,脚本的核心原理是修改此文件,使 macOS 认为所有应用程序的警告时间被推迟到 100 年后。

FUTURE=$(/bin/date -j -v+100y +"%Y-%m-%d %H:%M:%S +0000")

3. 修改 ScreenCaptureApprovals.plist

如果 macOS 版本高于 15.1,则脚本会使用 defaults write 命令,将 kScreenCaptureApprovalLastAlerted 和 kScreenCaptureApprovalLastUsed 设置为未来 100 年后的时间。

/usr/bin/defaults write "$PLIST" "$1" -dict \
    kScreenCaptureApprovalLastAlerted -date "$FUTURE" \
    kScreenCaptureApprovalLastUsed -date "$FUTURE"

4. 生成 MDM 配置文件(适用于 15.1+)

macOS 15.1 及以上版本提供了一个官方方法,通过 MDM(移动设备管理)策略来禁止所有应用程序的截图警告。脚本可以自动生成 MDM 配置文件 macOS_15.1_DisableScreenCaptureAlerts.mobileconfig,用户可以手动导入到 MDM 服务器。

<key>forceBypassScreenCaptureAlert</key>
<true/>

这使得所有受 MDM 管理的 macOS 设备不会再显示截图警告。

5. 创建 LaunchAgent 以定期运行

为了让该脚本定期执行,脚本会创建 LaunchAgent 配置文件,使其每 24 小时运行一次。

<key>StartInterval</key>
<integer>86400</integer>

并使用 launchctl 命令注册该任务,使其在后台运行。

/bin/launchctl bootstrap gui/$UID "$AGENT_PLIST"

6. 提示用户授予完全磁盘访问权限

由于 ScreenCaptureApprovals.plist 和 TCC.db 都受系统保护,脚本需要 Full Disk Access(完全磁盘访问权限)。如果脚本检测到 bash 没有该权限,它会引导用户手动授予。

/usr/bin/open 'x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles'